我想知道是否有一个使用 IIS6 的解决方案来删除 url 中的 default.aspx 文本。例如,如果用户点击:

www.website.com/default.aspx

浏览器只显示:

www.website.com/

无论。这只是为了搜索引擎优化。

我已经在我的应用程序中使用 UrlRewriting.NET 进行一些重写,但我并没有那么聪明地为此创建规则。

非常感谢任何帮助。

谢谢。何塞

有帮助吗?

解决方案

如果您需要进行网址重写,那么您需要做的就是确保您的链接指向正确的网址。

如果您没有修复链接,请由浏览器决定是否要显示其请求的实际链接。

如果你真的想做一个狡猾的工作,你可以使用一些javascript来使浏览器的地址栏显示你喜欢的任何内容,即使它无效。

其他提示

我认为 ScottGu 已经涵盖了 ASP.NET 重写的主题: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx.

他涵盖的内容包括:

  • 使用 UrlRewriter.net、ISAPI Rewrite 进行重写
  • ASP.NET 技巧,回发(点击友好版本的 url)

对于你的问题,我认为你需要使用组合,从不链接到“default.aspx”,即。仅链接到“/”。然后使用 Scott 的表单回发浏览器文件来确保回发始终命中相同的友好版本的 url。

将“default.aspx”重定向到“/”,然后由“default.aspx”提供服务,这对我来说听起来像是一场灾难。只需修复您的链接即可确保您永远不会明确地出现在“default.aspx”上。

我认为更改搜索结果索引(假设它知道HTTP 301)的最简单方法是在default.aspx的Page_Load中编写一个小函数,使用301 Moved Permanently(或302 Moved Temporarily)重定向浏览器。

void Page_Load(...) {

    if(Request.Path.EndsWith("default.aspx", true/*case-insensitive*/, null)) {
       Response.StatusCode = 301;
       Response.StatusDescription = "Moved Permanently";
       Response.Headers.Add("Location", "/");
       HttpContext.Current.ApplicationInstance.CompleteRequest(); // end the request
    }

    // do normal stuff here
}

如果将default.aspx设置为在IIS中提供的默认文档,并且所有内部站点链接都包含URL 而不使用 default.aspx,那么我认为应该这样做。

虽然用户仍然可以输入 default.aspx ,但搜索引擎蜘蛛应该只从您的链接href属性中选择更友好的URL。

我这样做的方法是在公共类Global:System.Web.HttpApplication中使用Application_BeginRequest并检查HttpContext.Current.Request.URL for default.aspx,然后从那里使用HttpContext.Current.Response.Redirect如果你找到它。

缺点是重定向并不总是那么好,如果您将数据发布到default.aspx页面,这将不起作用。但是你不能简单地欺骗浏览器显示不同的URL,尽管你可以告诉ASP.NET为任何请求提供你想要的任何页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top