为什么htaccess重定向被否决?

时间:2011-09-06 17:25:30

标签: .htaccess mod-rewrite mod-alias

我有:

Redirect 301 /blog/?p=1 http://www.new-site.com/blog/2000/10/myslug/

工作正常,除非后面跟着:

RedirectMatch 301 ^/blog(/)?(.*)$ http://www.new-site.com/blog/$2

我尝试了各种版本,包括RewriteRule,但没有任何效果。如何保留第一个特定规则,并写一个“其他一切保持其请求uri和查询字符串”规则?

由于

1 个答案:

答案 0 :(得分:0)

好吧,假设这些只是两条线,我看到的是:

Redirect 301 /blog/?p=1 http://www.new-site.com/blog/2000/10/myslug/

RedirectMatch 301 ^/blog(/)?(.*)$ http://www.new-site.com/blog/$2

这些基本上是说同样的事情,即在匹配时,将所有博客查询永久重定向到新网站。

对于第二个,你说的是从一开始就匹配字符串/blog,你可以捕获一个可能的斜杠,也可能是你还要捕获的更多信息,然后把所有这些信息到blog/extra-picked-up-info。这可能是问题的一部分,或者您可以通过重新排序指令来解决它,并查看lower指令是否优先。

RedirectMatch 301 /blog(?:/\?)?(.*)?$ http://www.new-site.com/blog/$1
Redirect 301 /blog/?p=1 http://www.new-site.com/blog/2000/10/myslug/

否则,您将需要重新检查您的URI,并找到更具识别性的内容。