2013-07-18 76 views
1

我想這個頁面htaccess的重定向重定向htaccess的PHP

products_filter.php?f16%5B0%5D=bla+bla+bla&cPath=72&M_ID=12x 

products_filter.php?f16%5B0%5D=bla+bla&cPath=72&M_ID=12x 

我想這(和許多其他方式)

RewriteCond %{QUERY_STRING} ^f16%5B0%5D=bla+bla+bla$ 
RewriteRule ^products_filter\.php$ http://www.example.com/products_filter.php?f16%5B0%5D=bla+bla&cPath=72&M_ID=12x [L,R=301] 

我在做什麼錯這裏?

回答

1

問題在這個表達式使用$(輸入端):

RewriteCond %{QUERY_STRING} ^f16%5B0%5D=bla+bla+bla$ 

由於您的查詢字符串:16%5B0%5D=bla+bla+bla&cPath=72&M_ID=12x

更改該行:

RewriteCond %{QUERY_STRING} ^f16%5B0%5D=bla+bla+bla(&|$) 

更新:

看着你的問題,我意識到你正在使用不少需要轉義的特殊字符。

RewriteCond %{QUERY_STRING} ^(f16%5B0%5D)=bla\+bla\+bla(?:&(.*)|$) [NC] 
RewriteRule ^(products_filter\.php)$ /$1?%1=bla+bla&%2 [L,R=301,NE] 

PS:在這裏使用NE標誌是很重要的。否則%5B%5D將由Apache進一步編碼。

+1

你太快! –

+0

試過這個,不工作 –

+0

嗯看着你的問題我意識到你正在使用相當多的特殊字符,需要逃脫。看我編輯的版本。 – anubhava

0

試試這個代碼:

RewriteCond %{QUERY_STRING} ^f16%5B0%5D=bla+bla+bla 
RewriteRule ^products_filter\.php$ http://www.example.com/products_filter.php?f16%5B0%5D=bla+bla&cPath=72&M_ID=12x [L,R=301] 
+0

也試過這個,也不行 –