我有一个网页在服务器上运行正常,但在我的新服务器中无效。 Apache Log表示,由于可能的配置错误,请求超过了10个内部重定向的限制。使用' LimitInternalRecursion'必要时增加限额。使用' LogLevel debug'获得回溯。"。 我无法修复它。
<IfModule rewrite_module>
RewriteEngine on
RewriteRule ^(.*)\.css$ $1.css [L]
RewriteRule ^(.*)\.png$ $1.png [L]
RewriteRule ^(.*)\.jpg$ $1.jpg [L]
RewriteRule ^(.*)\.gif$ $1.gif [L]
RewriteRule ^(.*)\.js$ $1.js [L]
RewriteRule ^(.*)\.swf$ $1.swf [L]
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?idioma=$1&codigo=$2&subcodigo=$4&subsubcodigo=$6 [L]
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?idioma=$1&codigo=$2&subcodigo=$4&subsubcodigo=$6 [L]
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?idioma=$1&codigo=$2&subcodigo=$4 [L]
RewriteRule ^(.*)/(.*)/(.*)/(.*)/$ index.php?idioma=$1&codigo=$2&subcodigo=$4 [L]
RewriteRule ^(.*)/(.*)/(.*)$ index.php?idioma=$1&codigo=$2 [L]
RewriteRule ^(.*)/(.*)$ index.php?idioma=$1&codigo=$2 [L]
RewriteRule ^(.*)/$ index.php?idioma=$1 [L]
RewriteRule ^/$ index.php [L]
</IfModule>
答案 0 :(得分:0)
这些规则创造了一个无限循环
RewriteRule ^(.*)\.css$ $1.css [L]
RewriteRule ^(.*)\.png$ $1.png [L]
RewriteRule ^(.*)\.jpg$ $1.jpg [L]
RewriteRule ^(.*)\.gif$ $1.gif [L]
RewriteRule ^(.*)\.js$ $1.js [L]
RewriteRule ^(.*)\.swf$ $1.swf [L]
顺便说一句,它是无用的(所以你可以删除它们。)
您的代码中也存在许多设计问题(您可以组合多个规则,可以使用限制性更强的正则表达式,可以避免捕获不需要的数据等)。
最后,你的htaccess看起来像这样
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/[^/]+/([^/]+)/[^/]+/([^/]+)/?[^/]*$ /index.php?idioma=$1&codigo=$2&subcodigo=$3&subsubcodigo=$4 [L]
RewriteRule ^([^/]+)/([^/]+)/[^/]+/([^/]+)/?[^/]*$ /index.php?idioma=$1&codigo=$2&subcodigo=$3 [L]
RewriteRule ^([^/]+)/([^/]+)/?[^/]*$ /index.php?idioma=$1&codigo=$2 [L]
RewriteRule ^([^/]+)$ /index.php?idioma=$1 [L]
RewriteRule ^$ /index.php [L]
</IfModule>