2011-09-06 60 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,並找到一些更獨特的識別。