Перенаправление всех запросов URL и файлов через .htaccess в зависимости от того, существует файл или нет - PullRequest
0 голосов
/ 14 марта 2012

Вот что я пытаюсь сделать:

  • Когда файл запрашивается из файловой системы, и он не существует, переписать URL-адрес в /index.php?404
  • Когда файл запрашивается и он существует в файловой системе, перепишите URL-адрес в /index.php?file
  • В любом другом случае перепишите URL-адрес в /index.php?data

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

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} (.*\.([a-zA-Z]{2,4}))$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ./index.php?404 [L]

RewriteCond %{REQUEST_FILENAME} (.*\.([a-zA-Z]{2,4}))$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* ./index.php?file [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ./index.php?data [L]

1 Ответ

1 голос
/ 14 марта 2012

У вас есть бесконечный цикл перезаписи. Чтобы решить - добавьте дополнительное условие, чтобы не переписывать уже переписанные URL-адреса .. или, по крайней мере, игнорируйте запросы к index.php.

Один из возможных подходов:

# do not touch any requests to index.php
RewriteRule ^index\.php$ - [L]

приписка Как работает флаг L: Флаг последнего [L] RewriteRule не работает?

...