我如何停止处理 htaccess?
How i can stop processing of htaccess?
我的 htaccess 中有两个指令。
RewriteRule ^(it|en|de)/(.*) ?lng= [L,QSA]
这意味着:对于所有以它开头的 url,en,将 url 变量“lng”设置为 $lang
现在,我希望将所有未以语言代码开头的页面重定向到 /it:
我试试这个:
RewriteCond %{REQUEST_URI} !^/(it|en|de)/{0,1}(.*)
RewriteRule ^(.*)$ /it/ [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}
url开头正确添加了单词“/it”,还有无穷大“lng=it”
我使用“L”标志:这应该停止处理规则集。
有什么提示吗?
编辑:
添加我的完整 .htaccess
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(it|en|de)/(.*) ?lng= [L,QSA]
RewriteRule ^catalogue-men$ views/main/pages/index.cfm?gen=1 [QSA,L]
RewriteCond %{REQUEST_URI} !^/it/
RewriteRule ^(.*)$ /it/ [R=301,L]
请记住 mod_rewrite
循环运行,直到没有规则触发。您正在获得重定向循环,因为第一条规则是从 URI 的开头删除 /it/
,而 301
规则是在前面添加它。
- 重新排序您的规则
- 使用
THE_REQUEST
代替 REQUEST_URI
- 在您的跳过条件中添加
/catalogue-men
这个 .htaccess 应该适合你:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} !\s/+(?:it|catalogue-men)/ [NC]
RewriteRule ^(.*)$ /it/ [R=301,L,NE]
RewriteRule ^(it|en|de)/(.*) ?lng= [L,QSA]
RewriteRule ^catalogue-men$ views/main/pages/index.cfm?gen=1 [QSA,NC,L]
我的 htaccess 中有两个指令。
RewriteRule ^(it|en|de)/(.*) ?lng= [L,QSA]
这意味着:对于所有以它开头的 url,en,将 url 变量“lng”设置为 $lang
现在,我希望将所有未以语言代码开头的页面重定向到 /it:
我试试这个:
RewriteCond %{REQUEST_URI} !^/(it|en|de)/{0,1}(.*)
RewriteRule ^(.*)$ /it/ [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}
url开头正确添加了单词“/it”,还有无穷大“lng=it”
我使用“L”标志:这应该停止处理规则集。
有什么提示吗?
编辑: 添加我的完整 .htaccess
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(it|en|de)/(.*) ?lng= [L,QSA]
RewriteRule ^catalogue-men$ views/main/pages/index.cfm?gen=1 [QSA,L]
RewriteCond %{REQUEST_URI} !^/it/
RewriteRule ^(.*)$ /it/ [R=301,L]
请记住 mod_rewrite
循环运行,直到没有规则触发。您正在获得重定向循环,因为第一条规则是从 URI 的开头删除 /it/
,而 301
规则是在前面添加它。
- 重新排序您的规则
- 使用
THE_REQUEST
代替REQUEST_URI
- 在您的跳过条件中添加
/catalogue-men
这个 .htaccess 应该适合你:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} !\s/+(?:it|catalogue-men)/ [NC]
RewriteRule ^(.*)$ /it/ [R=301,L,NE]
RewriteRule ^(it|en|de)/(.*) ?lng= [L,QSA]
RewriteRule ^catalogue-men$ views/main/pages/index.cfm?gen=1 [QSA,NC,L]