通过 htaccess 将 /index.php?country=a 重定向到 /a/
Redirecting /index.php?country=a to /a/ by htaccess
重定向
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
将被删除。
变量%{QUERY_STRING}
表示url、
的查询部分(?后面的部分)
所以你不能匹配模式中的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]
在测试这些规则之前清除浏览器的缓存。
RewriteRule ^/([a-zA-Z]+) index.php?country= [NC,L]
它将帮助您从任何值中获得干净的 URL,而不仅仅是 'a'
RewriteRule ^a$ index.php?country=a [NC,L]
这个肯定有效...确保 index.php?country=a 不在任何子目录中
重定向
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
将被删除。
变量%{QUERY_STRING}
表示url、
所以你不能匹配模式中的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]
在测试这些规则之前清除浏览器的缓存。
RewriteRule ^/([a-zA-Z]+) index.php?country= [NC,L]
它将帮助您从任何值中获得干净的 URL,而不仅仅是 'a'
RewriteRule ^a$ index.php?country=a [NC,L]
这个肯定有效...确保 index.php?country=a 不在任何子目录中