是否可以通过第一个大写字母重写URL?

时间:2013-10-22 22:25:24

标签: .htaccess mod-rewrite

是否可以使.htaccess在URL中查找第一个大写字母?

例如:

example.com/?country=United-Kingdom 

应改写为:

example.com/United-Kingdom

BUT

example.com/?page=somepage 

应改写为:

example.com/somepage

基本上我希望htaccess对以第一个大写字母开头的字符串采取行动。

1 个答案:

答案 0 :(得分:2)

尝试:

RewriteEngine On

RewriteRule ^([A-Z][a-zA-Z0-9-]+)$ /?country=$1 [L]
RewriteRule ^([a-z0-9-]+)$ /?page=$1 [L]

这两条规则将接受以下请求:http://example.com/United-Kingdom并在内部将其重写为:/?country=United-Kingdom,而http://example.com/somepage之类的请求会在内部重写为/?page=somepage,假设网页不能有大写字母。

要重定向浏览器以显示非查询字符串网址,您需要:

RewriteCond %{THE_REQUEST} \ /(index\.php)?\?(page|country)=([^&\ ]+)
RewriteRule ^ /%3 [L,R=301]