使用动态 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 重定向的主要内容,如果未能解决你的问题,请参考以下文章