我尝试在 httpd 2.4.4 中设置这个 RewriteCond:
...
RewriteCond expr "%{QUERY_STRING} =~ /welcome/"
RewriteRule ^(.*)$ %1\.html
因此,例如,如果我访问https://localhost/?welcome
,我应该看到页面https://localhost/welcome.html
。
相反,它返回 500 内部服务器错误。为什么?
错误日志内容如下:
由于可能的配置错误,请求超出了 10 次内部重定向的限制。如有必要,请使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。
答案1
尝试:
RewriteCond %{QUERY_STRING} (welcome)
RewriteRule ^.*$ %1.html
这会将 %1 替换为 RewriteCond 中的匹配组。因为您在这里使用的是静态字符串,所以您只需使用:
RewriteCond %{QUERY_STRING} welcome
RewriteRule ^.*$ welcome.html