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(); 
}