1

我有:

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 和查询字符串”规则?

谢谢

4

1 回答 1

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. 这可能是问题的一部分,或者您可以通过重新排序指令并查看较低的指令是否获得优先级来解决它。

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,并找到更独特的标识。

于 2011-09-06T18:15:36.267 回答