Исправление ошибок исправления 500

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

Error Document 500 /index.php 

… но он не работает или не перенаправляется.

Вот мой полный .htaccess

  Options -Indexes Options +FollowSymlinks ErrorDocument 500 /index.php RewriteEngine On RewriteRule ^BEARS bears.php?page=bears [NC,L] RewriteCond %{http_host} ^www.domian.org/login.php [NC] RewriteRule ^(.*)$ https://www.domian.org/login.php [R=301,L] RewriteCond %{http_host} ^domian.com [NC] RewriteRule ^(.*)$ http://www.domian.org/$1 [R=301,L] RewriteCond %{http_host} ^domian.org [NC] RewriteRule ^(.*)$ http://www.domian.org/$1 [R=301,L] RewriteCond %{http_host} ^www.domian.com [NC] RewriteRule ^(.*)$ http://www.domian.org/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)/DB/(.+)/page/(.+)$ $1.php?DB=$2&page=$3 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)/DB/(.+)$ $1.php?DB=$2 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)/(.+)$ $1.php?page=$2 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ $1.php?page=$1 [L,QSA] 

Также кто-нибудь знает, откуда генерируется ошибка 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 

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

Related of "Исправление ошибок исправления 500"

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

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

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

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

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

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

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

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

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

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

Кажется, что нежелательная запись приведет к тому, что этот цикл станет сумасшедшим.