Htaccess переписать проблему условия - PullRequest
1 голос
/ 07 сентября 2011

Я пытаюсь последовать примеру Пола Айриша о том, как встроить минимизированную версию моего сайта в /publish.Я успешно интегрировал процесс автоматической сборки, но не могу получить файл .htaccess, указывающий на правильную папку.

Моя цель:

На работающем сервере перенаправить весь трафик обычного сайта в папку /publish для использования «встроенного» сайта.Но когда на сервере разработки используются файлы разработки в обычной корневой папке /.

Моя проблема:

Я хочу, чтобы htaccess переписывал запросы отroot в каталог /publish.Поскольку тот же htaccess будет использоваться в каталогах / и /publish, мне нужно условие перезаписи, чтобы остановить переписывание запросов внутри каталога /publish в /publish/publish/my-page.У меня есть это в настоящее время:

RewriteCond %{SCRIPT_FILENAME} !^/publish/.+
RewriteRule ^(.*)$ publish/$1 [L]

Приведенное выше условие ищет запросы, которые не имеют script_filename, начиная с /publish.Если это так, он должен переписать запрос с publish/ перед.

Однако это не работает.У кого-нибудь есть идеи, что с ним не так?Могу ли я использовать разные серверные переменные, чтобы определить, находится ли запрос в каталоге /publish или нет.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2011

Вместо этого следует использовать %{REQUEST_URI}, поскольку это правильная переменная, которая будет иметь путь относительно корня сайта, а не физическое имя файла, как другие.

RewriteCond %{REQUEST_URI} !^/publish/
RewriteRule ^(.*)$ publish/$1 [L]
2 голосов
/ 07 сентября 2011

Я думаю, %{SCRIPT_FILENAME} не устанавливается, если вы явно не спрашиваете Apache о php-файле, возможно, вам следует попробовать вместо него %{REQUEST_FILENAME}.
Кстати, вы можете взглянуть на страницу документации mod_rewrite.для получения дополнительной информации: http://httpd.apache.org/docs/current/en/mod/mod_rewrite.html#rewritecond

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