htaccess для перенаправления в папку, игнорируя поддомен - PullRequest
0 голосов
/ 14 мая 2018

У меня проблемы с созданием правил .htaccess, чтобы сделать это доменное имя ico. [Любые доменные имена] все файлы значков (.ico, .gif, .png, .svg) [здесь больше ничего не обслуживалось, никогда].
И мне нужно, чтобы значки обслуживались (постоянные перенаправления) из папок на основе корневого домена, то есть:
https://ico.example0.com/favicon.ico до https://ico.example0.com/www.example0.com/favicon.ico
https://ico.example1.com/apple-touch-icon.pngна https://ico.example1.com/www.example1.com/apple-touch-icon.png
https://ico.example2.com/favicon.gif на https://ico.example0.com/www.example2.com/favicon.gif

Можно ли это сделать?
Спасибо!
-Брайан

1 Ответ

0 голосов
/ 18 мая 2018

Да, вы можете сделать это.

Вам необходимо будет создать каталоги для каждого домена в% DOCUMENT_ROOT% (для этого я создал www.google.com и www.facebook.com :

root@alberta:/var/www/html# ls -ltr
total 32
-rw-r--r--  1 www-data www-data 10701 Apr 16 11:01 index.html
drwxr-xr-x 15 www-data www-data 12288 Apr 16 14:52 mantis
drwxr-xr-x  2 www-data www-data 4096 May 18 15:02 www.google.com
drwxr-xr-x  2 www-data www-data 4096 May 18 15:04 www.facebook.com

Добавьте правило для перенаправления, используя в качестве базы% HTTP_HOST% (это домен, из которого поступает запрос). Я добавил правило в виртуальный хост по умолчанию /etc/apache2/sites-available/000-default.conf:

    RewriteEngine on
    RewriteRule ^/?(.*) %{DOCUMENT_ROOT}/%{HTTP_HOST}/$1 [L]

Что приводит к этой конфигурации:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        RewriteEngine on
        RewriteRule ^/?(.*) %{DOCUMENT_ROOT}/%{HTTP_HOST}/$1 [L]
        Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Я эмулировал запрос, используя CURL, и он работает (Параметр - заголовок Host: сообщает apache, какой я домен) :

root@alberta:/etc/apache2/sites-available# curl --verbose --header 'Host: www.google.com' 'localhost'

Ответ - документ html в моем каталоге www.google.com:

< HTTP/1.1 200 OK
...
<p>ok google.com</p>

То же самое с фейсбуком:

root@alberta:/etc/apache2/sites-available# curl --verbose --header 'Host: www.facebook.com' 'localhost'

Ответ - документ в моей папке www.facebook.com:

< HTTP/1.1 200 OK
...
<p>my facebook.com</p>

Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...