2011-09-06 87 views
1

我有:为什么htaccess重定向被否决?

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

,除非后面的正常工作,:

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

我已经试过各种版本,包括重写规则,但没有奏效。我如何保持第一个特定的规则,并写一个“其他所有保持请求的URI和查询字符串”规则?

感谢

+0

请发布您的.htaccess文件。这可能是由它写入的顺序造成的,就像操作顺序一样。 – stslavik

+0

如果这些是htaccess文件中的唯一两行,它仍然不起作用,但只是第一行很好用! – beej

回答

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