views:

43

answers:

2

I need to redirect my old cart links to the new site's search

Here's an example:

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

what new should look like: www.example.com/cart/index.php?dispatch=search.results&q=Festo-Line-Acuator-DNC-dsh-100-dsh-150-dsh-PPVA-dsh-Q

So on my old URL's they would always originate from the subdirectory "servlet", the next piece is a variable category (in this case "the-1736"), then the piece I want to use in the new url string, then everything after that next slash should be ignored.

A: 

Here's how I do it in 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

The example below is in my Global class where I redirect to a non WWW url. You can modify it to your liking, the 301 redirect is the same.

EDIT: Answer above was given before the OP clarified the technology they were using

rockinthesixstring
A: 

I am assuming he is using PHP, as that is the extension on the second URL. I am also assuming a J2EE back-end for the old URL because of the "servlet" part.

I am not an expert in url-rewrite, but it seems that you should be able to do that. I guess it depends on the actual back-end, assuming Apache based PHP. It also depends on if the replacement is as simple as it seems from your question.

Also, is path servlet/the-1736 static? Not a PHP expert either, but you should be able to use a file path manipulator to take the path after the static text, and before the Detail directive and put it into the query string for the new URL.

Jeff Walker