2013-05-29 108 views
0

我想重寫和301重定向的URL與查詢參數,如下面: -重寫規則參數

domain.com/link.asp?StockNo=601-0287 

的東西,如以下: -

domain.com/Product-Name 

的許多網址的庫存號碼將會不同,每個網站的產品名稱也不相同。

沒有很多的URL,以手動進行寫入不會是一個問題......

的東西,如以下不工作: -

RewriteRule ^link.asp/?StockNo=601-0287$ /Product-Name/$1 [R=301,L] 

但是,這將是一種所需的規則。

什麼是處理這些重寫的最好方法?

是否需要RewriteCond?我假定不需要{QUERY_STRING},因爲產品名稱與查詢字符串不匹配?

在此先感謝。

回答

1

要匹配REQUEST_URI和QUERY_STRING在一起,你需要使用%{THE_REQUEST}

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=[^\s]+ [NC] 
RewriteRule^/Product-Name/? [R=302,L] 

編輯:要處理特定股票號碼:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=601-0287 [NC] 
RewriteRule^/Product-A/? [R=302,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=601-0293 [NC] 
RewriteRule^/Product-B/? [R=302,L] 

如果你有太多的這些股票要重寫,那麼我強烈建議你使用RewriteMap。請參閱此答案瞭解更多詳情:Edit .htaccess with PHP

+0

感謝您的回覆。幾乎就在那裏 - 它將URL追加到查詢字符串(例如:'domain.com/Product-Name/?StockNo = 601-0287')。 '''一切都不是必需的。是否有修改您的答案,將從URL中刪除查詢字符串?感謝這樣一個及時的答案。 – zigojacko

+0

您可以嘗試在不同的瀏覽器中使用,因爲'/ Product-Name /%1?'中的'?'會從重定向的URL中刪除查詢。 – anubhava

+0

同樣發生在不同的瀏覽器(緩存清除只是爲了確保)。 – zigojacko