简体   繁体   中英

301 Redirect in ASP.NET web.config including Parameters

I'm looking into using 301 redirects having noticed a bunch of hits on my domain on Google Analytics to .asp pages which not longer exist having moved everything over to a .NET setup.

Having spent a bit of time Googling, I have been able to add the following code to my web.config.

<location path="products.asp">
    <system.webServer>
     <httpRedirect enabled="true" destination="https://www.hartnollguitars.co.uk/products.aspx" httpResponseStatus="Permanent" />
    </system.webServer>
</location> 

This is fine and moves everything from products.asp to pproducts.aspx but it does not preserve the querystring, which is essential to make any sense, ie products.aspx?id=789

You have to add $Q to the destination url to preserve the querystring. So in your case it should look like this:

<location path="products.asp">
    <system.webServer>
     <httpRedirect enabled="true" destination="https://www.hartnollguitars.co.uk/products.aspx$Q" httpResponseStatus="Permanent" />
    </system.webServer>
</location> 

If you have IIS 7 or greater, there is a far more robust solution to URL rewrites. Using the URL Rewrite Module 2.0 , you can create rich redirects that can include the original query string. Following this guide on IIS.net , you can see in the screenshot the "Append query string" option. IIS URL重写模块UI

You also have the option of using the server variable {QUERY_STRING}. Finally, if you used a Regex with groups in your rule's pattern, you can use the variables {R:#} as shown in the screenshot as well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM