从域到 www.domain 的全局 301 重定向
Posted
技术标签:
【中文标题】从域到 www.domain 的全局 301 重定向【英文标题】:Global 301 redirection from domain to www.domain 【发布时间】:2011-01-07 21:22:58 【问题描述】:我可以使用 Global.asax 的开始请求来重定向所有内容吗,
从 mydomain.domain 到 www.mydomain.domain?
如果这是真的,我该怎么做?
【问题讨论】:
【参考方案1】:对 Jan 的回答进行了一些小改动,让它对我有用:
protected void Application_BeginRequest(Object sender, EventArgs e)
string currentUrl = HttpContext.Current.Request.Url.ToString().ToLower();
if (currentUrl.StartsWith("http://mydomain"))
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", currentUrl.Replace("http://mydomain", "http://www.mydomain"));
Response.End();
更改是使用 BeginRequest 事件并将 currentUrl 设置为 HttpContext.Current.Request.Url 而不是 HttpContext.Current.Request.Path。见:
http://www.mycsharpcorner.com/Post.aspx?postID=40
【讨论】:
BeginRequest 发生在 PreRequestHandlerExecute 之前还是之后?【参考方案2】:protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
string currentUrl = HttpContext.Current.Request.Path.ToLower();
if(currentUrl.StartsWith("http://mydomain"))
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", currentUrl.Replace("http://mydomain", "http://www.mydomain"));
Response.End();
【讨论】:
您好,我发现 global.asax 中不存在 PreRequest 处理程序,所以我按照您的建议添加了它。但是在调试模式下没有触发事件......我在这里做错了什么? 将PreRequestHandlerExecute
更改为BeginRequest
时是否触发?
是的! BeginRequest 在每个请求中触发
然后把内片移到 BeginRequest 就可以了。
Request.Path 只返回虚拟路径,没有域名。上面的代码不起作用。以上是关于从域到 www.domain 的全局 301 重定向的主要内容,如果未能解决你的问题,请参考以下文章
301 将 www.domain 重定向到 domain.com
乘客(Ruby on Rails)中的301重定向从根域到www子域?
.htaccess 旧域到新域 301 重定向,但只有域,而不是页面
服务到 301 重定向从 domain.com 到 www.domain.com