2014-07-15 40 views
2

樣品網址:tedsite.com/watch_video.php?v=c4603cc14419a0639fb5一個問號添加到重定向連接在.htaccess

這應該被重定向到:tedsite.com/watch?v=c4603cc14419a0639fb5

我試圖使用重定向,但它不工作:

RewriteRule ^watch?v=(.*) watch_video.php?v=$1 [nc] 

和:

RewriteRule ^watch\?v=(.*) watch_video.php?v=$1 [nc] 

此作品,未經追求離子標記,但我需要它的鏈接:

RewriteRule ^watchv=(.*) watch_video.php?v=$1 [nc] 

如何將問號添加到重定向的鏈接?

回答

3

您無法匹配RewriteRule中的查詢字符串。使用RewriteCond而不是像這樣:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 

RewriteCond %{QUERY_STRING} ^v=([^&]+) [NC] 
RewriteRule ^watch/?$ watch_video.php?v=$1 [NC,L,QSA] 
+2

+1,我總是喜歡看到你的'%{QUERY_STRING}'條件。順便說一句,你添加了'Options + FollowSymLinks -MultiViews',這種特殊模式是否有原因,或者它只是一些你認爲有助於避免一般問題的東西? – zx81

+1

是的,我之所以在這裏添加它是有原因的。這是因爲'/ watch'被轉發到'/ watch.php',並且如果'MultiViews'處於打開狀態,那麼查詢字符串將會丟失,因爲Apache的內容協商模塊在'mod_rewrite'之前標記以創建URI'/ watch.php'和規則將不會運行。 – anubhava