使用动态 URL 设置 301 重定向

Posted

技术标签:

【中文标题】使用动态 URL 设置 301 重定向【英文标题】:Setting up 301 redirects with Dynamic URLs 【发布时间】:2011-01-22 10:38:17 【问题描述】:

我猜这实际上是一项不可能完成的任务,但我想我会通过 *** 运行它,看看我是否错了。基本上,我们有一些动态创建的用于 SEO 的 URL(大约 300,000 多个),我们希望对它们进行 301 重定向

我们当前的 URL 如下所示:

http://www.site.com/<Brand>/<Product Name>/<productGuid>

我们的网址看起来像这样:

http://www.site.com/productpage.aspx?productGUID=<productGuid>

Google 仍然有大量 网址被编入索引,但我们显然希望他们知道应该用我们的新网址替换它们(而且这不仅仅是重复的内容),因此 301重定向。

我们的问题是,新 URL 的 <Brand><Product Name> 部分显然是动态创建的……因此无法为它们创建 301 重定向。

或者不可能吗?

感谢您对我们如何让 Google 开始将其已编入索引的 URL 更新为新 URL 的任何想法或建议。

【问题讨论】:

您可以发布您正在使用的正则表达式规则吗? 【参考方案1】:

为您的产品页面创建一个新的内部名称,例如:ProductPageInternal.aspx。

将所有 ProductPage.aspx 流量重写到一个 Redirect.aspx 页面,其中包含 301 重定向代码到新的、漂亮的 url。(thekaido 的想法)

将所有新 URL 重写为 ProductPageInternal.aspx。

<rewrite url="~/ProductPage.aspx?GUID=(.+)" to="~/Redirect.aspx?productGUID=$1" /> 
<rewrite url="~/(.+)/(.+)/(.+)" to="~/productpageInternal.aspx?productGUID=$3" /> 

【讨论】:

【参考方案2】:

在您的 productpage.aspx 页面的代码上,设置 Response.StatusCode 和 Response.RedirectLocation 并结束 Response。

Response.StatusCode = 301;
Response.RedirectLocation = "http://www.site.com/<Brand>/<Product Name>/<productGuid>";
Response.End();

【讨论】:

感谢您的回复,但页面只是重定向自身,即使它是由新 URL 而不是旧 URL 调用的。关于如何阻止这种情况发生的任何想法? 如果重定向来自旧网址,请尝试仅进行重定向。 是的,我想知道我该怎么做呢?谢谢。 好吧,稍后搜索一下:Request.Url.AbsoluteUri。不幸的是,它揭示了(令人惊讶的)旧 URL 是服务器看到的。换句话说,我不知道如果服务器被旧 URL 或新 URL 调用,它怎么可能。 您是如何设置到新网址的路由的?这是 Web 表单还是 mvc?

以上是关于使用动态 URL 设置 301 重定向的主要内容,如果未能解决你的问题,请参考以下文章

对动态短网址使用 301/303/307 重定向

htaccess 重定向 301 + 重写冲突

IIS7 301 从 URL 列表重定向

小程序定制开发WEB服务器-设置网站301全站跳转(域名301重定向)

网站301重定向怎么设置

301 使用 .htaccess 重定向 URL 模式