.htaccess将链接重定向到同一个URL但添加查询字符串

时间:2017-04-09 17:43:45

标签: apache .htaccess redirect

我正在尝试根据网站用户的用户名使用漂亮的联盟网址。

我需要重定向一个类似的链接:

https://example.com/anything-here/username

https://example.com/anything-here/?ref=user_id

我找到了这个解决方案:

RewriteRule ^(.*)username(.*)$ https://example.com/?ref=user_id [L,R=301]

它可以工作,但重定向到我在此处设置的页面(在这种情况下,它是主页)。我的问题是:

如何将其重定向到开头请求的页面,但删除用户名并添加/?ref=user_id

1 个答案:

答案 0 :(得分:0)

你看起来好像很近,你只需要使用反向引用。请尝试以下方法:

RewriteRule ^(.*)/username$ https://example.com/$1/?ref=user_id [R=302,L]

$1RewriteRule 模式中第一个捕获组的反向引用

此外,您似乎不需要在模式结尾处使用(.*),因为username位于网址的末尾(至少在您的示例中)。

这是302(临时)重定向 - 如果需要,将其更改为301(永久)。

在测试之前,您需要清除浏览器缓存。