Действительно ли возможно сослаться на полный каталог / каталог полного пути, такой как /usr/home/public_html/x
в .htaccess mod_rewrite?
Я рассмотрел самое очевидное дело помещения следующего в .htaccess субдомена (сохраненный в папке в public_html), надеясь, что это отобразилось бы (не, перенаправляют!) на файл, как указано абсолютным каталогом:
RewriteEngine on
RewriteRule /xochotl /usr/home/public_html/x.php
Это не работает... Я получаю 500 Внутренних Ошибок Сервера
.htaccess в основном public_html каталоге просто имеет следующее, и он работает с относительными каталогами...
RewritEngine on
RewriteRule /xochotl x.php
Невозможно отобразить путь к файлу при использовании mod_rewrite
в контексте каталога (то есть при использовании .htaccess
). Однако вы должны иметь возможность отображать абсолютный путь, когда размещаете свои правила в контексте каждого сервера ( httpd.conf
, либо в конфигурации главного сервера, либо в конфигурации виртуального сервера).
Причина в том, что mod_rewrite
работает в контексте каталога. mod_rewrite
преобразует URL-адрес, а затем назначает себя обработчиком запроса. Это позволяет ему отправлять внутреннее перенаправление через Apache, что в противном случае было бы невозможно на таком позднем этапе обработки.
Внутреннее перенаправление выполняется путем вызова функции API Apache ap_internal_redirect
, которая ожидает URI, который затем переназначается в файловую систему. В качестве побочного примечания, это также является причиной того, почему % {REQUEST_URI}
и % {REQUEST_FILENAME}
изменяются, когда вы выполняете перенаправление, которое включает тот же .htaccess
файл читается для последующего запроса (например, каждый раз, когда .htaccess
находится в корне сайта).