Проверьте, существует ли другой файл, тогда запрос существует в .htaccess - PullRequest
1 голос
/ 13 апреля 2011

Я пытаюсь выполнить следующее в файле .htaccess, но не могу заставить его работать ...

  • , если файл ~ / maintenance.htm существует, временно перенаправитьк этому файлу (R = 302) и добавьте текущую строку запроса (QSA), конец (l)
  • , если файл maintenance.htm запрошен (обновлен пользователем) и существует, показать файл, строку запроса иend (L, QSA)
  • it файл maintenance.htm запрашивается (обновляется пользователем) и больше не существует, перенаправьте его на index.php (R = 301) и добавьте строку запроса (QSA), end (L)

Первый шаг - когда все идет не так, я не могу найти способ проверить, существует ли файл, который в данный момент не запрашивается.Я смотрел на много разных вещей, в том числе и на RewriteMaps, но, похоже, не могу перенаправить из перезаписанных карт, или это просто неясно для меня.Например, если я пишу как простой Perl-скрипт, который проверяет, существует ли файл, как я могу получить от этого результат, перенаправлять или нет?

Спасибо за любую помощь / советы!

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Я не уверен, что у вас уже есть, но это должно работать. Возможно, вы получили ошибку 500 при использовании -f из-за внутреннего цикла перенаправления.

RewriteEngine on

RewriteCond %{REQUEST_URI} !/maintenance.htm
RewriteCond %{DOCUMENT_ROOT}/maintenance.htm -f
RewriteRule (.*) /maintenance.htm [L,R]

RewriteCond %{REQUEST_URI} /maintenance.htm
RewriteCond %{DOCUMENT_ROOT}/maintenance.htm !-f
RewriteRule (.*) /index.php [L,R=301]

Надеюсь, это поможет.

0 голосов
/ 13 апреля 2011

Может быть RewriteCond %{REQUEST_FILENAME} !-f поможет проверить наличие файла

'- f' (обычный файл) Обрабатывает TestString как путь и проверяет, существует ли он или нет, и является обычнымфайл.

См .: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

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