重定向并附加GET参数

时间:2018-04-12 15:15:27

标签: apache .htaccess

我在将一个GET参数附加到新网址时遇到了从一个网址重定向到另一个网址的问题。

第一次(从旧域的根到新域的根)完全正常。之后(在这个案例的.htaccess中进一步向下),GET参数随机出现在新网址的中间。

显然这导致了一些令人讨厌的404情况...

RewiriteEngine on
Redirect 301 / https://foo.bar?redirect=1
Redirect 301 /foo/bar/ https://foo.bar/foo/bar?redirect=1

提供进一步资料:

我们的想法是重定向inklusive这个参数,触发弹出窗口,提供有关最近重定向的信息,这样用户就不会对 foo.bar 的访问失去信心。 / p>

第一次重定向将导致正确的方式,它完美地工作。 第二个,结果如下:

https://foo.bar/foo/?redirect=1bar/

请和谢谢你:)

1 个答案:

答案 0 :(得分:0)

您的规则在配置时工作正常,为什么?

使用mod_alias redirect和此部分

Redirect 301 / https://foo.bar?redirect=1

将匹配/& /foo/& /foo/bar/等等,因此第二条规则根本不会起作用,因为每条请求都被更严格的规则捕获,而第一条规则重定向/foo/bar/的结果是foo/bar?redirect=1foo/bar/因为重定向比赛结束后的每一件事都会追加到新的目标。

为避免使用RedirectMatch

RewriteEngine On
RedirectMatch 301 /?$ https://foo.bar/foo/bar?redirect=1
RedirectMatch 301 /foo/bar/ https://foo.bar/foo/bar?redirect=1

通过这种方式使用正则表达式,您只能通过第一个规则与root匹配,然后通过第二个规则与/foo/bar/匹配。

注意:清除浏览器缓存然后测试