将%{QUERY_STRING}重定向到友好网址

时间:2012-09-18 21:12:46

标签: .htaccess mod-rewrite url-rewriting

我正在尝试添加最后一项改进(关于htaccess),这就是我希望它将/?mod=inicio重定向到/inicio。所以我尝试使用以下代码来执行此操作,但它会继续构建这样的网址/inicio?mod=inicio

RewriteCond %{QUERY_STRING} ^mod=([a-z]+)$ [NC]
RewriteRule .* /%1 [L]

额外参数相同:从/?mod=x&type=y-z/x/y-z

1 个答案:

答案 0 :(得分:1)

请尝试以下规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?mod=([a-z]+)&type=([a-z\-]+)
RewriteRule ^ /%1/%2? [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?mod=([a-z]+)($|\ )
RewriteRule ^ /%1? [L]

关键是匹配实际请求而不是URI,因为您的其他规则(来自您之前的问题)将导致这些重写匹配,它们将相互冲突。另一个关键点是在目标末尾包含?(例如/%1/%2?),这使得查询字符串不会被附加