ASP.NET web.config 中的 301 重定向包括参数

5

我注意到我的域名在Google Analytics上显示有很多访问量,但是这些访问链接到已经不存在的.asp页面。而我们已经把所有东西都迁移到了.NET平台上,因此我希望使用301重定向。

在花费了一些时间进行谷歌搜索之后,我已经能够将以下代码添加到我的web.config中。

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

这样做可以将所有内容从products.asp移动到pproducts.aspx,但它并没有保留查询字符串,这对于理解非常关键,比如products.aspx?id=789

2个回答

9
您需要在目标URL中添加$Q以保留查询字符串。所以在您的情况下,它应该是这样的:
<location path="products.asp">
    <system.webServer>
     <httpRedirect enabled="true" destination="https://www.hartnollguitars.co.uk/products.aspx$Q" httpResponseStatus="Permanent" />
    </system.webServer>
</location> 

0
如果您使用的是IIS 7或更高版本,则有一种更强大的URL重写解决方案。使用URL Rewrite Module 2.0,您可以创建包含原始查询字符串的丰富重定向。根据IIS.net上的指南,您可以在屏幕截图中看到“附加查询字符串”选项。IIS URL Rewrite Module UI 您还可以使用服务器变量{QUERY_STRING}。最后,如果您在规则模式中使用了带组的正则表达式,则还可以如屏幕截图所示使用变量{R:#}。

谢谢Adam,但我在共享服务器上,没有完全的访问权限。 - Jamie Hartnoll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接