Перенаправление URL к пользовательскому каталогу

У меня есть 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 на классы и методы.

1
задан 13 April 2017 в 15:24

1 ответ

Необходимо добавить 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

1
ответ дан 7 December 2019 в 15:51

Другие вопросы по тегам:

Похожие вопросы: