【发布时间】:2012-07-26 15:47:50
【问题描述】:
这是我目前在我的开发环境中所拥有的:
php_value error_log log/php.log
php_value display_errors 1
php_value magic_quotes_gpc Off
RewriteEngine On
# remove slash
RewriteCond %{REQUEST_FILENAME} !-d
# file.php to /file
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteCond %{REQUEST_URI} !^/ajax.php
RewriteRule ^(.+)\.php$ http://localhost/$1 [R=301,L]
# /file to file.php
RewriteRule ^([^/.]+)$ $1.php [L]
我尝试了很多此规则的变体,但总是收到 500 错误:
RewriteRule ^(.*)$ /book.php?url=$1 [L]
这是在我的 Apache 的 error.log 中:
[Fri Jul 27 19:56:51 2012] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
我错过了什么,为什么会出现重定向循环?
【问题讨论】:
-
另外,有没有办法让规则完全独立于域?我想避免在本地/qa/prod 环境中更改此文件
-
或者只是
RewriteRule ^book/([^/]*)$ /book.php?id=$1 [L]。最后但同样重要的是,尝试添加:RewriteBase /
标签: apache .htaccess mod-rewrite url-rewriting redirect-loop