0

如何改变:

domain.com/go/?custom_ref=001

进入

domain.com/go/?ref=001

请使用 htaccess 重写?

4

1 回答 1

0

不是特别灵活,但这适用于您的确切问题:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^ref=([0-9]*)
RewriteRule ^go/$ go/?custom_ref=%1 [QSA]

请注意,要匹配的条件,ref必须先出现在查询字符串中。规则上的[QSA](Query String Append)标志将保留原始查询字符串,因此传递的其他值不会丢失。

另请注意,此代码假定 .htaccess 文件位于文档根目录中。如果文件在其他地方,您将需要调整RewriteRule. 例如,当 .htaccess 文件位于 /go/.htaccess 时,将其更改为以下内容将起作用:

RewriteRule . ?custom_ref=%1 [QSA]

如果您希望这更灵活,请查看对此问题的回复- 它们包含用于更改查询字符串中的单个变量并保留其他所有内容的语法。


编辑:

要替换查询字符串中的custom_refwith ref,您可以使用以下内容重定向包含该custom_ref变量的请求。RewriteEngine On在和其他规则之间添加这个:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)custom_ref=(.*)
RewriteRule ^go/$ /go/?%1ref=%3 [R=301,L]

这更像是一个补丁而不是一个解决方案。如果您可以访问代码,我建议您改为在此处修复变量名称。

于 2012-11-13T20:05:23.527 回答