Apache 模重写无限递归
我有以下关于apaches mod rewrite的问题(可能是一个简单的问题,但我就是不明白…) 我希望我的URL路径以两个字母的部分(国家代码)开头,如 每当URL与此模式不匹配时,我希望我的Apache 模重写无限递归,apache,mod-rewrite,redirect,Apache,Mod Rewrite,Redirect,我有以下关于apaches mod rewrite的问题(可能是一个简单的问题,但我就是不明白…) 我希望我的URL路径以两个字母的部分(国家代码)开头,如 每当URL与此模式不匹配时,我希望我的.htaccess重定向到固定的起始地址,如上面的http://www.example.com/se/ 我还需要重定向不以斜杠结尾的URL(即http://www.example.com/se也应重定向…) 我已在我的.htaccess中放入以下行: RewriteEngine On RewriteBa
.htaccess
重定向到固定的起始地址,如上面的http://www.example.com/se/
我还需要重定向不以斜杠结尾的URL(即http://www.example.com/se
也应重定向…)
我已在我的.htaccess
中放入以下行:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !^/[a-z]{2}/
RewriteRule ^(.*)$ se/ [R,L]
但这会导致无限递归,因为请求
http://www.example.com/se/
也被重定向。我不明白,为什么在这种情况下,RewriteCond
变为true。您正在检查您的查询字符串(这是URL中?
之后的所有内容)是否以/[a-z]{2}/
开头。在你的例子中,事实并非如此。因此,在重定向之后,查询字符串仍然不以该字符串开头,因此您再次被重定向到同一URL。然后一次又一次
我想你要找的是%{REQUEST\u URI}
:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/
RewriteRule ^(.*)$ se/ [R,L]
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/
RewriteRule ^(.*)$ se/ [R,L]