2010-02-03 3 views
3

Это является продолжением до this question.Абсолютные пути к файлу в mod_rewrite - разрешено?

Я пытаюсь построить mod_rewrite правило, где переписывание цель абсолютный путь вне веб-корень, как

RewriteRule ^manual(/(.*))?$ /www/htdocs/customername/manual/$2 [L] 

мне нужно сделать это, потому что я не может использовать Alias в контексте .htaccess (общий хостинг).

Есть ответы, намекающие на то, что это вообще невозможно.

Это правда? Я не могу найти никакой информации в руководстве.

Может ли кто-нибудь уточнить, когда возможны абсолютные пути, а когда нет?

ответ

5

Конечно, вы можете использовать абсолютные пути к файлу в конфигурации вашего сервера.

Вы не сможете сделать это в файле .htaccess, хотя это даст вам доступ к чтению файлов вне вашего корня документа, даже файлы от других клиентов, которые должны были быть защищены блоком <Location ...>.

+0

Хорошо, это соответствует моему опыту, к сожалению. Невозможно обойти ограничение '.htaccess', правильно? Даже если папка «target» принадлежит текущему пользователю? –

+0

В RewriteRule не существует способа, но symlink (предложение outis) будет работать нормально **, если ** ваш хостинг-провайдер был достаточно щедрым, чтобы можно было переопределить 'FollowSymlinks' или' SymLinksIfOwnerMatch'. – Martin

0

Замена в RewriteRule является URL-адресом. Абсолютным путем замены является абсолютный путь URL, а не абсолютный путь к файлу. Если вы не можете ссылаться на ресурс (т. Е. Он не имеет URL-адреса), тогда механизм перезаписи не поможет вам.

Вместо этого попробуйте создать символическую ссылку, хотя вам понадобятся FollowSymLinks или SymLinksIfOwnerMatch option. Если у вас нет доступа к оболочке, вы можете написать скрипт для создания символических ссылок.

+0

modrewrite ... В соответствии с этапами API в это время слишком поздно для любых манипуляций с URL-адресами. Когда вы манипулируете URL/filename в контексте для каждого каталога, mod_rewrite сначала перезаписывает имя файла обратно к соответствующему URL (что обычно невозможно, но см. Директиву RewriteBase ниже для трюка для достижения этого), а затем инициирует новый внутренний подзапрос с новым URL-адресом. Это возобновляет обработку фаз API. –

+0

@ luca: в этом разделе рассказывается о том, как пути к файлу превращаются в пути URL для RewriteRules. Он описывает RewriteRules как применение к URL-адресам, а замены - как пути URL. Раздел Martin ссылается на упоминания, позволяющие пути к файлам в качестве замещений. – outis

Смежные вопросы