我想知道为什么以下htaccess文件会产生500错误:
<IfModule !mod_rewrite.c>
ErrorDocument 500 "Your_Server_Is_Not_Compatible: Apache does not have mod_rewrite loaded. Please check your Apache setup."
RedirectMatch 302 .* index.php
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ versions/0/1/$1
</IfModule>
非常感谢提前
答案 0 :(得分:2)
你得到一个500错误,因为你导致服务器进入一个无限循环(它生气,并抛出一个错误停止)。
这是因为您的RewriteRule
始终匹配:
RewriteRule ^(.*)$ versions/0/1/$1
^(.*)$
匹配值versions/0/1/
,因此在执行初始重写后,将重新评估规则集并创建一个如下所示的循环:
versions/0/1/something
versions/0/1/versions/0/1/something
versions/0/1/versions/0/1/versions/0/1/something
..等等。
您应该调整RewriteRule
来阻止循环,可能如下:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/versions
RewriteRule ^(.*)$ versions/0/1/$1
此外,您的ErrorDocument 500
语句没有多大意义,因为您永远不会生成500错误,因为您没有启用mod_rewrite
,因为您' ve用mod_rewrite
包围了相关的<IfModule mod_rewrite.c>
指令。