从 URL 中隐藏 default.aspx
-
06-07-2019 - |
题
我想知道是否有一个使用 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为任何请求提供你想要的任何页面。