0

我对 apaches mod-rewrite 有以下问题(这可能是一个简单的问题,但我就是不明白......)

我希望我的 URL 路径以两个字母部分(国家代码)开头,例如

http://www.example.com/se/

每当一个 URL 与此模式不匹配时,我希望我.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在这种情况下变成真的。

4

1 回答 1

0

您正在检查您的查询字符串(这是 URL 中的所有内容是否?不以/[a-z]{2}/. 在你的例子中,它没有。因此,在重定向之后,查询字符串仍然不是以此开头,因此您会再次被重定向到相同的 URL。然后一次又一次。

我认为您正在寻找的是%{REQUEST_URI}

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/
RewriteRule ^(.*)$ se/ [R,L]
于 2012-08-28T17:43:08.653 回答