我在将一个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/
请和谢谢你:)
答案 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/
匹配。
注意:清除浏览器缓存然后测试