Apache mod_rewrite: объясните мне %{HTTP_HOST}, особенно при использовании дополнительных доменов

Apache mod_rewrite: объясните мне %{HTTP_HOST}, особенно при использовании дополнительных доменов

Ситуация (дерево каталогов) на сервере Apache с дополнительными доменами:

main-domain.com/ 
| 
|_ .htaccess (just an empty file, no rule in here) 
|_ index.html (shown when accessing http://main-domain.com)
| 
|_ addon-domain-1.com/ 
|  | 
|  |_ .htaccess 
|  |_ index.html (shown when accessing http://addon-domain-1.com or http://main-domain.com/addon-domain-1.com/)
| 
|_ addon-domain-2.com/ 
   | 
   |_ .htaccess 
   |_ index.html (shown when accessing http://addon-domain-2.com or http://main-domain.com/addon-domain-2.com/)

Скажем, в файле «addon-domain-1.com/.htaccess» у меня есть правило, использующее %{HTTP_HOST}, например:

RewriteCond %{HTTP_HOST} ^something$

Оценивается ли %{HTTP_HOST} доменом текущего запрошенного URL на сервере???

Итак, если вы просите:

http://addon-domain-1.com/

%{HTTP_HOST} will be "addon-domain-1.com"?

http://addon-domain-1.com (без косой черты в конце)

%{HTTP_HOST} will still be "addon-domain-1.com"?

http://www.addon-domain-1.com

%{HTTP_HOST} will still be "www.addon-domain-1.com"?

И при запросе:

http://main-domain.com/addon-domain-1.com

%{HTTP_HOST} will be "main-domain.com"???
or "main-domain.com/addon-domain-1.com"???

person Marco Demaio    schedule 14.07.2010    source источник


Ответы (2)


Вы почти угадали их все правильно! Последний будет;

main-domain.com
person TheDeadMedic    schedule 15.07.2010

%{HTTP_*} соответствует заголовку HTTP с именем, указанным после отображаемого префикса. В HTTP 1.1 хост, к которому осуществляется доступ, указан в заголовке Host, так что да.

person Ignacio Vazquez-Abrams    schedule 15.07.2010
comment
А это значит, что клиент отправляет содержимое переменной. Нельзя ничему доверять от клиента. И вы не должны использовать ненадежные данные в правиле перезаписи. - person ceving; 11.01.2019