我有一个遗留网站的长网址,我需要301,例如:domain.com/web/vehicle/655520/2007-Hummer-H2---?sort_by=year&args=All_years--All_makes- -All_models - All_body_types - All_vehicles
我需要将此(以及更多类似的网址)重定向到重新设计的网站上的新页面,例如:domain.com/hummer.php
如何从URL中删除特殊字符(例如---?)和其他所有内容,以便我可以成功使用301?
答案 0 :(得分:0)
你不能用mod_rewrite“剥离”任何东西 您只能从字符串的某些部分创建引用,并使用它们来构建新的URL。
如何做到这一点取决于您希望从原始网址构建的网址。
答案 1 :(得分:0)
为什么需要?除非您计划将长长的重定向列表编码到.htaccess文件中,否则您应该在PHP中执行所有重定向。
从您提供的网址示例中,我假设所有项目都有一个与网址绑定的唯一ID。在这种情况下,您可以在数据库中创建一个地图,表示项目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();
}