【发布时间】:2020-10-26 19:52:48
【问题描述】:
我的 htaccess 中有两个指令。
RewriteRule ^(it|en|de)/(.*) $2?lng=$1 [L,QSA]
这意味着:对于所有以它开头的url,en,将url变量“lng”设置为$lang
现在,我希望将所有未以语言代码开头的页面重定向到 /it:
我试试这个:
RewriteCond %{REQUEST_URI} !^/(it|en|de)/{0,1}(.*)
RewriteRule ^(.*)$ /it/$1 [R=301,L]
但是当我打电话时:
http://HOST/my-page
在 url 上,我得到了一个“ERR_TOO_MANY_REDIRECTS”:
http://HOST/it/my-page?lng=it&lng=it&{many-others-lng=it}
“/it”这个词正确加在url的开头,而且是无穷大的“lng=it”
我使用“L”标志:这应该停止处理规则集。
有什么提示吗?
编辑: 添加我的完整 .htaccess
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(it|en|de)/(.*) $2?lng=$1 [L,QSA]
RewriteRule ^catalogue-men$ views/main/pages/index.cfm?gen=1 [QSA,L]
RewriteCond %{REQUEST_URI} !^/it/
RewriteRule ^(.*)$ /it/$1 [R=301,L]
【问题讨论】:
-
如果客户发送
/it/my-page?lng=en,您希望发生什么? -
@DusanBajic 重定向到:/it/my-page
-
你在某处有一个循环。错误信息非常清楚。您可以发布完整的 .htaccess 文件吗?指令的顺序很重要。
-
谢谢。我将完整的 .htaccess 添加到问题中。
标签: regex apache .htaccess apache2.4