2015-09-05 101 views
2

我找正則表達式,將匹配的模式的.htaccess重寫URL啓動/重定向

/catalogue/name-of-the-product-p1-1-1.php 

或者

/catalogue/name-of-the-product-p1.php 

,並重定向到:

/name-of-the-product 

的代碼我嘗試過:

RewriteRule ^/catalogue/([A-Za-z0-9-]+)-p(.+)\.php /$1 [R=301] 

任何幫助,將不勝感激。

+1

您使用了標籤[tag:.htaccess],但請注意'^ /'在.htaccess文件中永遠不會匹配,因爲您只剩下當前部分路徑。 – meuh

+0

當我在regexr.com上測試它們時,你的答案都是正確的,但是當我在.htaccess中放置任何規則時,沒有重定向,並且該網站正在顯示404頁面? –

+1

在您的服務器日誌文件中查找錯誤消息。 將這個重寫放在你的apache配置文件中會更好。 您需要在「RewriteEngine on」開頭。只有在 文檔根目錄的頂部,如果您還添加了「選項+文件信息」,並且僅當您使用「^ catalog」或「^ /?catalog」啓動模式時纔會在.htaccess中工作,如 其中一個答案。 – meuh

回答

1

嘗試

RewriteRule ^/?catalogue/([A-Za-z0-9-]+?)-p([0-9]+)([^.]*)\.php$ /$1 [R] 

正則表達式模式「^ /目錄/([A-ZA-Z0-9 - ] +) - P([? 0-9] +)([^。] *)。php $「可匹配 請求uris /catalogue/name-of-the-product-p1-1-1.php/catalog/name- of-the-product-p1.php它首先與「目錄」清楚地匹配,然後「([A-Za-z0-9-] +?)」匹配「產品名稱」並且節省了t他在重寫目標中的重用值爲1美元。

+0

你能簡單地解釋一下爲什麼這會適合所描述的場景嗎? – mjuarez

+0

將舊版網站遷移到magento .htaccess中。我還添加了[R = 301,L] R = 301 - 讓谷歌知道它是永久移動/更改和L - 因此它可以停止尋找更多重寫匹配。感謝您的幫助。 –

+0

不客氣!很高興我能幫助,歡呼! – starkeen

1

嘗試此正則表達式:

^/catalogue/([A-Za-z0-9-]+)-p[0-9]+(-[0-9]+)*\.php 
+0

這個答案出現在低質量的審查隊列中,大概是因爲你沒有解釋代碼。如果你解釋它(在你的答案中),你更有可能得到更多的讚揚 - 而提問者更可能學到一些東西! –