将www.example.com/?city_name=New-York“重写为/ cities / newyork的最有效方法是什么?

时间:2012-05-04 19:58:01

标签: apache mod-rewrite rewrite

我有这种格式的网址

www.example.com/?city_name="New-York"

我想知道是否有办法自动将此网址重写为

www.example.com/cities/new-york

使用重写规则。

1 个答案:

答案 0 :(得分:1)

在查询字符串上使用RewriteCond,然后使用结果RewriteRule

RewriteCond %{QUERY_STRING} ^city_name="([\w]+)" [NC]
RewriteRule (.*) /cities/%1? [L,R]

RewriteCond在查询字符串上运行正则表达式,查找您的city_name参数。 NC是无案例标志,以使正则表达式不区分大小写。在实际的RewriteRule指令中,我们完全重写了/cities/%1的路径,其中%1是上一个成功的RewriteCond指令中的第一个匹配组,在这种情况下,slugg为要求的城市。我们在末尾添加?来擦除请求中的查询字符串,然后传递LR标记以发出完整的302重定向。