如何更改:
domain.com/go/?custom_ref=001
进入
domain.com/go/?ref=001
请使用htaccess重写吗?
答案 0 :(得分:0)
不是特别灵活,但这适用于您的确切问题:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^ref=([0-9]*)
RewriteRule ^go/$ go/?custom_ref=%1 [QSA]
请注意,对于要匹配的条件,ref
必须在查询字符串中排在第一位。规则上的[QSA]
(查询字符串追加)标志将保留原始查询字符串,因此传递的其他值不会丢失。
另请注意,此代码假定.htaccess文件位于文档根目录中。如果文件位于其他位置,则需要调整RewriteRule
。例如,当.htaccess文件放在/go/.htaccess时,将其更改为以下内容将起作用:
RewriteRule . ?custom_ref=%1 [QSA]
如果您希望这更灵活,请查看对this question的回复 - 它们包含更改查询字符串中的单个变量并保留其他所有内容的语法。
修改强>
要在查询字符串中将custom_ref
替换为ref
,您可以使用以下内容重定向包含custom_ref
变量的请求。在RewriteEngine On
和其他规则之间添加:
RewriteCond %{QUERY_STRING} ^(([^&]*&)*)custom_ref=(.*)
RewriteRule ^go/$ /go/?%1ref=%3 [R=301,L]
这更像是一个补丁,而不是一个解决方案。如果您可以访问代码,我建议改为修改变量名称。