htaccess mod_rewrite ссылается на каталоги полного пути - PullRequest
1 голос
/ 24 июля 2010

Можно ли ссылаться на каталог полного / абсолютного пути, например /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

1 Ответ

2 голосов
/ 25 июля 2010

Невозможно отобразить путь к файлу при использовании mod_rewrite в контексте для каждого каталога (то есть с использованием .htaccess).Однако вы должны иметь возможность сопоставлять абсолютный путь, когда размещаете свои правила в контексте для каждого сервера (httpd.conf, либо в конфигурации основного сервера, либо в конфигурации виртуального сервера).

Причина этогоиз-за того, как mod_rewrite работает в контексте каталога.mod_rewrite преобразует URL, а затем назначает себя обработчиком для запроса.Это позволяет ему отправлять внутреннее перенаправление через Apache, что в противном случае было бы невозможно на столь позднем этапе обработки.

Внутреннее перенаправление выполняется посредством вызова API-функции Apache ap_internal_redirect, которая ожидает URI, которыйзатем переназначается в файловую систему.В качестве примечания следует также, что %{REQUEST_URI} и %{REQUEST_FILENAME} изменяются, когда вы выполняете перенаправление, которое включает в себя тот же файл .htaccess, который читается для последующего запроса (например, в любое время .htaccess в корне сайта).

...