У меня есть URL https://Facebook. ****.in, настроенный для указания на каталог,/var/www/html/facebook_app. виртуальный файл hosts для этого/etc/apache2/sites-available/facebook. ****.in.conf.
Я хотел бы добавить путь к URL, который указывает на другой пользовательский каталог, таким образом что,
https://facebook.****.in/apis -> /var/www/html/apis
Я искал этот форум и нашел некоторое решение здесь
Но я не уверен, где я должен добавить псевдоним к? это должен быть default.conf? или Facebook. файл ****.in.conf.
Если это - Facebook. файл ****.in.conf, как я должен указать псевдоним? Я хотел бы разместить его на 443 портах для SSL.
Facebook. файл ****.in.conf:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName facebook.****.in
ServerAlias facebook.****.in
DocumentRoot /var/www/html/facebook_app/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName facebook.****.in
ServerAlias facebook.****.in
DocumentRoot /var/www/html/facebook_app/
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/apache2/ssl/facebook_****_in.crt
SSLCertificateKeyFile /etc/apache2/ssl/facebook.****.in.key
SSLCertificateChainFile /etc/apache2/ssl/facebook.****.in.ca-bundle
</VirtualHost>
вот .htaccess файл.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
У меня есть index.php файл, который отображает параметры URL на классы и методы.
Необходимо добавить Apache Alias
и Directory
директивы в обоих VirtualHost
разделы, которые Вы имеете в Вашем facebook.****.in.conf
файл конфигурации, таким образом, это включено и для HTTP и для Подключений HTTPS.
Отрывок конфигурации, которую необходимо добавить, должен быть чем-то как
Alias "/apis" "/var/www/html/apis"
# Now set directory permission
<Directory "/var/www/html/apis">
AllowOverride None
Options -Indexes +FollowSymLinks
<IfVersion < 2.3 >
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
</Directory>
Я думаю, что Ваша Серверная версия Apache выше, чем 2,3, поэтому только добавляя Require all granted
оператор должен быть прекрасным, не проверяя на версию. Я добавил его на всякий случай все же.
Кроме того, я включал некоторые другие директивы в целях производительности и безопасности. См. ниже быстрый обзор их
AllowOverride None
: это отключает использование .htaccess
файлы в каталог для безопасности и целей производительности. Основа программного обеспечения Apache рекомендует этот параметр конфигурации по http://httpd.apache.org/docs/current/mod/core.html#allowoverride"Для безопасности и причин производительности, ни на что не устанавливайте AllowOverride ни кроме Одного в Вашем блоке. Вместо этого найдите (или создайте), блок, который обращается к каталогу, где Вы на самом деле планируете поместить .htaccess файл".
Options -Indexes +FollowSymLinks
: -Indexes
опция предотвратит веб-сервер ( mod_autoindex
модуль конкретно) для возврата форматированного списка каталога, когда необходимый URL отображается на каталог, где нет никакого a DirectoryIndex
(например, файл index.html). Кроме этого, +FollowSymLinks
опция позволяет серверу переходить по символьным ссылкам в этом каталоге. Можно получить больше информации о Options
оператор и другие доступные варианты в документации чиновника веб-сервера Apache по http://httpd.apache.org/docs/current/mod/core.html#optionsТакже не забудьте устанавливать корректное разрешение на /var/www/html/apis
каталог и файлы для пользователя, который выполняет сервер Apache (www-data
в Ubuntu по умолчанию) и перезапускать сервис Apache для изменений для вступления в силу.
sudo service apache2 restart
Обновление
Можно также включать DirectoryIndex
директива в Directory
блок в случае, если Вы не имеете index.html
файл в том каталоге (например, index.php)
DirectoryIndex index.php
Также возможно указать больше чем один файл. В этом случае первый найденный файл будет возвращен
DirectoryIndex index.html index.php
Больше информации об этом по http://httpd.apache.org/docs/current/es/mod/mod_dir.html#directoryindex