2010-09-25 4 views

ответ

1

Возможно, вы захотите проверить, что вы переписываете, чтобы существовать до выполнения перезаписи, чтобы избежать цикла (отметив, что ваш тестовый шаблон соответствует тому, что вы переписываете). Один из возможных подходов к это сделать следующее:

# Check that the file isn't a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# ...nor is it a file 
RewriteCond %{REQUEST_FILENAME} !-f 
# ...but the result of the rewrite will be 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^([^/]+) $1.php 

Это также имеет (неосновной) преимущество, показывая оригинальный URL в тех случаях, когда 404 генерируется, при условии, что вы используете сообщение об ошибке акции Apache. Если бы вы переписались с несуществующим файлом PHP, сервер сказал бы, что /something.php не был найден, а не /something/, но так как переписывание не выполняется, если целевой файл не есть, вы получаете /something/.

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

1

может обработку случаев несуществующего файла и/или каталога может помочь

RewriteCond %{REQUEST_URI} -d 
RewriteCond %{REQUEST_URI} -f 

Попробуйте обработки этих случаев, чтобы избежать ошибок