【问题标题】:Hiding default.aspx from the URL从 URL 中隐藏 default.aspx
【发布时间】:2010-11-03 21:18:36
【问题描述】:

我想知道是否有使用 IIS6 的解决方案让应用程序摆脱 url 中的 default.aspx 文本。例如,如果用户点击:

www.website.com/default.aspx

浏览器只显示:

www.website.com/

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

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

非常感谢任何帮助。

谢谢。 何塞

【问题讨论】:

  • 忽略我的回答,我没有看到 IIS6.0 的要求

标签: c# asp.net seo url-rewriting


【解决方案1】:

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

他涵盖了以下内容:

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

对于您的问题,我认为您需要结合使用,永远不要链接到“default.aspx”,即。仅链接到“/”。然后使用 Scott 的 Form Postback 浏览器文件来确保回发总是命中同一个友好版本的 url。

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

【讨论】:

  • 嗨,布伦丹。我之前使用 Scott 的文章来构建 SEO 规则,但它不适用于隐藏默认页面名称。它只是行不通。还是谢谢。
【解决方案2】:

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

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
}

【讨论】:

  • 谢谢杰夫。我认为您的解决方案非常好,但是我遇到了无限重定向的错误。谢谢。
  • 我也做了同样的事情,但我得到了异常:“System.PlatformNotSupportedException:此操作需要 IIS 集成管道模式”
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

    如果将 default.aspx 设置为在 IIS 中提供的默认文档,并且所有内部站点链接都包含 URL 的 default.aspx,那么我认为应该可以解决问题。

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

      • 它不太好用,它可能导致无限重定向。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2010-10-30
      • 2023-03-09
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      相关资源
      最近更新 更多