2011-06-16 138 views
0

我試圖建立一個重寫將重定向此URL:mod_rewrite的301重定向不工作

/video-2011.php?video=150

這樣:

/視頻/ 150 /自由標題文本 - 在這裏/

我有使用這條線在我的.htaccess的重寫工作:

RewriteRule ^video/([0-9]+)/(.*)$ video-2011.php?video=$1 [L] 

但是,只要將R = 301加入到混音中,它就會中斷。有任何想法嗎?

下面是完整的.htaccess當它打破:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/
RewriteRule ^video/([0-9]+)/(.*)$ video-2011.php?video=$1 [R=301,L] 

任何幫助非常感謝,謝謝!

+0

你是什麼意思,它打破了?它說沒有找到,準備重定向等...? – 2011-06-16 22:57:31

+0

對不起,/video.php?視頻= 150不重定向到/視頻/ 150/ – 2011-06-17 02:21:01

+1

我認爲你的意思是說/視頻/ 150不重定向到/video.php?video=150 – 2011-06-17 02:22:26

回答

2

我想你可能會錯過.Htaccess中的一行。

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/
RewriteRule ^video/([0-9]+)/([a-z0-9-_]+)$ video-2011.php?video=$1 [L] 
#New 
RewriteCond %{REQUEST_URI} !^/video/([0-9]+)/([a-z0-9-_]+)/?$ 
RewriteCond %{QUERY_STRING} ^video=([0-9]+)&name=([a-z0-9-_]+)/?$ 
RewriteRule ^video-2011.php$ video/%1/%2/? [R=301,L] 

我假設你想重寫的URL,如果它是:

/video/150/freeform-title-text-here/ 

而且重定向的URL,如果它是:

/video-2011.php?video=150 

到:

/video/150/freeform-title-text-here/ 

因此,這樣可以使網站看起來漂亮整齊。

如果我錯了,請糾正我。

編輯

我在的RewriteCond已經添加到停止第二重寫發生。

由於第一條規則將明顯改寫:

/video/150/freeform-title-text-here/ 

這意味着查詢字符串你沒有看到:

所取得的第二個規則發生太大
/video-2011.php?video=150 

會。

+0

謝謝湯姆,這是正是我想要做的。我在我的htaccess中都有RewriteRule,301似乎沒有重定向這個URL:/video-2011.php?video=150 – 2011-06-20 12:34:48

+0

讚美答案,經測試並在我的服務器上運行。試試這個,讓我知道。 – Tomgrohl 2011-06-20 13:10:53

+0

感謝您的繼續幫助Tom,不幸的是,這會導致無限的重定向情況 - 「Firefox已經檢測到服務器正以一種永遠不會完成的方式重定向該地址的請求。」 – 2011-06-22 19:57:41

0

你可以嘗試:

RewriteRule ^video/([0-9]+)/ /video-2011.php?video=$1 [R=301,L,NC,QSA] 

而且是會重定向到/video/150/foo/video.php?video=150當你在你的問題已經說的相反。

+0

謝謝尋求幫助,但這實際上與我試圖達到的目標相反。正如Tom上面提到的,我希望重定向*/video-2011.php?video = 150 *到*/video/150/* – 2011-06-20 13:07:31

+0

在這種情況下@ Tomgrohl的答案應該適用於你:) – anubhava 2011-06-20 15:01:33