我有一个azure网站,名为:
http://myapp.cloudapp.net
当然,这个url有点难看,所以我通过set up a CNAME将http://www.myapp.com
指向了天蓝色的URL。
到这里为止一切都很好,但有一个障碍。
http://myapp.cloudapp.net
已经泄露出去,现在被谷歌索引,并生活在其他网站上。
我想永久地将任何针对myapp.cloudapp.net的请求重定向到位于www.myapp.com的新主页
我的网站是用IIS2.0编写的,因为这是一个MVC.Net应用程序,没有UI来访问IIS2.0,所有的事情都需要在应用程序代码或web.config中完成。
设置永久重定向的干净方法是什么?应该放在web.config中还是放在全局控制器中?
发布于 2010-06-21 12:37:56
您可能希望改用IIS重写模块(看起来“更干净”)。这里有一篇博客文章展示了如何做到这一点:http://weblogs.asp.net/owscott/archive/2009/11/30/iis-url-rewrite-redirect-multiple-domain-names-to-one.aspx。(您只需要将相关的标记放在web.config中。)
您可以使用的一个示例规则是:
<rule name="cloudexchange" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="cloudexchange.cloudapp.net" />
</conditions>
<action type="Redirect" url="http://odata.stackexchange.com/{R:0}" />
</rule>
发布于 2010-06-21 12:12:17
这是我所做的:
我们有一个用于所有控制器的基本控制器类,我们现在重写:
protected override void OnActionExecuted(ActionExecutedContext filterContext) {
var host = filterContext.HttpContext.Request.Headers["Host"];
if (host != null && host.StartsWith("cloudexchange.cloudapp.net")) {
filterContext.Result = new RedirectPermanentResult("http://odata.stackexchange.com" + filterContext.HttpContext.Request.RawUrl);
} else
{
base.OnActionExecuted(filterContext);
}
}
并添加了以下类:
namespace StackExchange.DataExplorer.Helpers
{
public class RedirectPermanentResult : ActionResult {
public RedirectPermanentResult(string url) {
if (String.IsNullOrEmpty(url)) {
throw new ArgumentException("url should not be empty");
}
Url = url;
}
public string Url {
get;
private set;
}
public override void ExecuteResult(ControllerContext context) {
if (context == null) {
throw new ArgumentNullException("context");
}
if (context.IsChildAction) {
throw new InvalidOperationException("You can not redirect in child actions");
}
string destinationUrl = UrlHelper.GenerateContentUrl(Url, context.HttpContext);
context.Controller.TempData.Keep();
context.HttpContext.Response.RedirectPermanent(destinationUrl, false /* endResponse */);
}
}
}
原因是我想要一个永久的重定向(而不是临时的),这样搜索引擎就可以纠正所有的坏链接。
https://stackoverflow.com/questions/3081796
复制相似问题