.htaccess 正在将%{QUERY_STRING}重定向到友好url

.htaccess 正在将%{QUERY_STRING}重定向到友好url,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我试图添加最后一个改进(关于htaccess),那就是我希望它将/?mod=inicio重定向到/inicio。所以我尝试用下面的代码来实现它,但它一直像这样构建url/inicio?mod=inicio RewriteCond %{QUERY_STRING} ^mod=([a-z]+)$ [NC] RewriteRule .* /%1 [L] 额外参数也是一样:从/?mod=x&type=y-z到/x/y-z尝试以下规则: RewriteCond %{THE_REQUEST} ^[A-Z]{

我试图添加最后一个改进(关于htaccess),那就是我希望它将
/?mod=inicio
重定向到
/inicio
。所以我尝试用下面的代码来实现它,但它一直像这样构建url
/inicio?mod=inicio

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

额外参数也是一样:从
/?mod=x&type=y-z
/x/y-z

尝试以下规则:

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?
)的末尾包含一个
,这样就不会追加查询字符串。

请尝试以下规则:

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?
)的末尾添加一个
,这样就不会附加查询字符串。

非常感谢您的回答和分享您的一些知识。非常感谢您的回答和分享您的一些知识。