Mod Rewrite 500 с исправлением ошибок - PullRequest
2 голосов
/ 22 сентября 2011

У меня есть файл .htaccess, который использует Mod_Rewrite, но я сталкиваюсь с проблемой, если кто-то вставляет ненужный URL-адрес, он генерирует ошибку 500 и отображает всю информацию моего мода.Я хотел бы либо прекратить генерировать ошибку 500, либо переслать эту ошибку на другую страницу.Я пытался.

 Error Document 500 /index.php 

... но он не работает или перенаправить.

Вот мой полный.ошибка 500 генерируется из.Я знаю, что в папке ошибок есть документы об ошибках, но эта ошибка говорит: «Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 500 Internal Server Error», и я не могу найти, откуда это происходит.

[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php.php.php.php.php.php.php.php.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php.php.php.php.php.php.php.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php.php.php.php.php.php.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php.php.php.php.php.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php.php.php.php.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php.php.php.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php.php.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html.php
[Thu Sep 22 11:11:40 2011] [debug] core.c(3071): [client 74.84.118.99] redirected from r->uri = /test.html

Где происходит этот цикл?Не видя этого.

Ответы [ 2 ]

1 голос
/ 28 мая 2013

Чтобы расширить ваш ответ, это более конкретно эта строка:

RewriteRule ^(.+)$ $1.php?page=$1 [L,QSA]

, которая не проверяет, заканчивается ли имя файла на PHP.

Она зацикливается, добавляя.php.php.php.php пока не будет достигнут максимум (отметьте apache/logs/error.log), а затем просто подайте исходную страницу, которая, как оказалось, присутствует, так что все выглядит нормально.

Чтобы это исправить, добавьте что-то вроде этого:

RewriteRule ^(.*)\.php$ - [L]

, который останавливается ([L]), если адрес заканчивается на .php.

1 голос
/ 22 сентября 2011

Я подумал, что я бы поставил решение проблемы здесь на тот случай, если кто-то столкнется с той же проблемой.

Моим кодом проблемы был этот фрагмент ...

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.+)$ $1.php?page=$1 [L,QSA]

Похоже, что нежелательная запись вызовет слишком большой цикл, как сумасшедший.

...