0

我有一個來自遺留網站的長URL,我需要301,例如:domain.com/web/vehicle/655520/2007-Hummer-H2---? sort_by =年& ARGS = All_years - All_makes - All_models - All_body_types - All_vehicles.htaccess - 需要301個帶有特殊字符的網址

我需要這個(以及更多類似的URL)重定向到一個新的頁面重新設計的網站上,網頁例如:domain.com /hummer.php

如何從URL中刪除特殊字符(例如---?)和其他所有內容,以便我可以成功使用301?

回答

0

你不能用mod_rewrite「去掉」任何東西。
您只能從字符串的各個部分創建引用並將其用於構建新的url。

你如何做到這一點取決於你想從原始網址構建出什麼樣的網址。

0

爲什麼你需要?除非您打算將長長的重定向列表編碼到您的.htaccess文件中,否則您應該在PHP中執行所有重定向。

從您給出的URL示例中,我假設所有項目都有一個唯一的ID與URL已經綁定。在這種情況下,您可以在數據庫中創建一個地圖,該地圖表明項目655520的「正確」URL是hummer.php。您可以使用它從PHP執行重定向。

下面是一個如何做到這一點的例子。我假設你已經有一個.htaccess文件將URL轉換爲GET。類似於RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]

//determine if you were passed a "legacy URL" (not shown) 
if (legacyURL) { 
    $urlComponents = $explode("/", $_GET['request']); 
    $url = getItemUrl($components[2]); 
    header("Location: " . $url,TRUE,301); 
    exit(); 
}