Url rewriting 如何从旧url的中间提取一部分并在新url的末尾使用它来编写301重定向?

Url rewriting 如何从旧url的中间提取一部分并在新url的末尾使用它来编写301重定向?,url-rewriting,http-status-code-301,Url Rewriting,Http Status Code 301,我需要将我的旧购物车链接重定向到新站点的搜索 下面是一个例子: 旧网址:http://www.example.com/servlet/the-1736/Festo-Line-Acuator-DNC-dsh-100-dsh-150-dsh-PPVA-dsh-Q/Detail 新的应该是什么样子:www.example.com/cart/index.php?dispatch=search.results&q=Festo-Line-Acuator-DNC-dsh-100-dsh-150-dsh-PPV

我需要将我的旧购物车链接重定向到新站点的搜索

下面是一个例子:

旧网址:http://www.example.com/servlet/the-1736/Festo-Line-Acuator-DNC-dsh-100-dsh-150-dsh-PPVA-dsh-Q/Detail

新的应该是什么样子:www.example.com/cart/index.php?dispatch=search.results&q=Festo-Line-Acuator-DNC-dsh-100-dsh-150-dsh-PPVA-dsh-q


因此,在我的旧URL上,它们总是来自子目录servlet,下一个片段是一个变量类别,在本例中是-1736,然后是我想在新URL字符串中使用的片段,然后下一个斜杠之后的所有内容都应该被忽略。

下面是我在VB.NET中的操作方法

Protected Sub OnBeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    'Force Removal of WWW
    Dim application As HttpApplication = TryCast(sender, HttpApplication)
    Dim url As Uri = application.Context.Request.Url
    Dim hasWWW As Boolean = UrlRegex.IsMatch(url.ToString())
    If hasWWW Then
        Dim newUrl As [String] = UrlRegex.Replace(url.ToString(), [String].Format("{0}://", url.Scheme))
        application.Context.Response.Status = "301 Moved Permanently"
        application.Context.Response.AddHeader("Location", newUrl.Replace("default.aspx", ""))
    End If

End Sub
下面的例子是在我的全局类中,我重定向到一个非WWW url。您可以根据自己的喜好修改它,301重定向也是一样的


编辑:上面的答案是在OP澄清他们使用的技术之前给出的,我假设他使用的是PHP,因为这是第二个URL上的扩展。由于servlet部分的原因,我还假设旧URL使用J2EE后端

我不是一个在url重写专家,但似乎你应该能够做到这一点。我想这取决于实际的后端,假设是基于Apache的PHP。这还取决于替换是否像您的问题中看起来那样简单


另外,路径servlet/the-1736是静态的吗?也不是PHP专家,但您应该能够使用文件路径操纵器在静态文本之后、在Detail指令之前获取路径,并将其放入新URL的查询字符串中。

您是否考虑过任何特定的编程语言?在.NET中有一种巧妙的方法可以实现这一点,我相信其他人也可以,或者你也可以在IIS或linux中实现这一点。。。我们只需要您使用哪种技术的详细信息?这都是linux机器上的php。我试图在htaccess文件中这样做,以确保它对搜索引擎友好。我已经为新站点构建了一个处理程序来解析我在what new should like链接中列出的q参数。我只是不确定如何在htaccess中解析出我想要的部分。因此,如果原始url是mydomain.com/servlet/X/Y/Z,我如何在htaccess中提取Y并将其放在重定向的末尾?