2011-07-19 65 views
0

我想重寫所有舊的oscommerce鏈接到一個新的網站。但是我需要重寫的部分網址出現問題。重寫htaccess舊的oscommerce鏈接

鏈接看起來是這樣的:

http://www.domain.com/product_info.php?cPath=3_72&products_id=129&osCsid=6j3iabkldjcmgi3s1344lk1285 

這改寫適用於上面的鏈接:

RewriteCond %{REQUEST_URI} ^/product_info\.php$ 
RewriteCond %{QUERY_STRING} ^cPath=3_72&products_id=129&osCsid=([A-Za-z0-9-_]+)$ 
RewriteRule ^(.*)$ http://www.domain.com/apple/air.html? [R=301,L] 

但不會爲工作:

http://www.domain.com/product_info.php?cPath=3_72&products_id=129 

我的問題是我無論&osCsid=6j3iabkldjcmgi3s1344lk1285部分是否包含,都希望重寫能夠正常工作。

回答

3

我覺得你可以不指定結束分隔符($)實現這一

這給一試:

RewriteCond %{REQUEST_URI} ^/product_info\.php$ 
RewriteCond %{QUERY_STRING} ^cPath=3_72&products_id=129 
RewriteRule ^(.*)$ http://www.domain.com/apple/air.html? [R=301,L] 

如果不把$的正則表達式字符串,你基本上結束他說:匹配以...開頭的字符串,不管發生什麼後

希望這有助於:)

1

這應該做的工作就好了:

RewriteCond %{QUERY_STRING} ^cPath=3_72&products_id=129 
RewriteRule ^product_info\.php$ http://www.domain.com/apple/air.html? [R=301,L] 
  1. 無需單獨的條件RewriteCond %{REQUEST_URI} ^/product_info\.php$ - 這部分可以(實際上,應該是,獲得更好的性能)轉移到重寫規則。

  2. 這就夠了^cPath=3_72&products_id=129 - 它告訴「當查詢字符串開始......」。不需要包含可選/非重要參數osCsid=([A-Za-z0-9-_]+)

  3. 該規則將被放置在網站根文件夾中的.htaccess文件中。如果放置在其他地方可能需要一些小的調整。