重定向
www.example.com/index.php?country=a
到
www.example.com/a/
尝试:
RewriteCond %{QUERY_STRING} index.php?country=a [OR]
RewriteCond %{REQUEST_URI} index.php?country=a
RewriteRule ^ http://www.example.com/a/? [L,R=301]
不起作用。
注意:
1)如果a
是动态的(我的列表中有60个国家/地区),此代码也是一个坏主意。
2)index.php?country=a
之后的任何事情,例如index.php?country=a&p=d&xx=k
被移除。
答案 0 :(得分:0)
变量%{QUERY_STRING}
表示网址的查询部分(?之后的部分),
所以你无法匹配模式中的uri index.php
,请尝试:
RewriteCond %{QUERY_STRING} ^country=([^&]+)(?:&(.*))?$ [NC]
RewriteRule ^ http://www.example.com/%1/? [L,R=301]
或者
RewriteCond %{THE_REQUEST} /index\.php\?country=([^&]+)
RewriteRule ^ http://www.example.com/%1/? [L,R=301]
在测试这些规则之前清除浏览器的缓存。
答案 1 :(得分:0)
RewriteRule ^/([a-zA-Z]+) index.php?country=$1 [NC,L]
它可以帮助您从任何值获得一个干净的URL,而不仅仅是'a'
答案 2 :(得分:0)
RewriteRule ^a$ index.php?country=a [NC,L]
这个肯定有效...确保index.php?country = a不在任何子目录中