Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 模重写无限递归_Apache_Mod Rewrite_Redirect - Fatal编程技术网

Apache 模重写无限递归

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

我有以下关于apaches mod rewrite的问题(可能是一个简单的问题,但我就是不明白…)

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

每当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
变为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]