我想知道是否有一个解决方案使用IIS6让应用程序摆脱url中的default.aspx文本。例如,如果用户点击:
www.website.com/default.aspx
浏览器只显示:
www.website.com /
无论如何。 这只是为了SEO。
我已经在我的应用程序中使用UrlRewriting.NET进行了一些重写,但是我不是那么聪明地为此创建规则。
任何帮助都非常感谢。
感谢。 何
答案 0 :(得分:3)
我认为ScottGu已经在ASP.NET中重写了主题:http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx。
他涵盖了以下内容:
有了你的问题,我认为你需要使用一个组合,永远不要链接到'default.aspx'即。仅链接到'/'。然后使用Scott的Form Postback浏览器文件确保回发始终触及相同友好版本的url。
将'default.aspx'重定向到'/',然后由'default.aspx'提供服务听起来像是给我带来灾难的秘诀。只需修复您的链接,确保您永远不会明确地使用'default.aspx'。
答案 1 :(得分:2)
我认为更改搜索结果索引(假设它知道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
}
答案 2 :(得分:1)
如果您需要进行网址重写,那么您需要做的就是确保您的链接指向正确的网址。
如果您没有修复链接,请由浏览器决定是否要显示其请求的实际链接。
如果你真的想做一个狡猾的工作,你可以使用一些javascript来使浏览器的地址栏显示你喜欢的任何内容,即使它无效。
答案 3 :(得分:1)
如果将default.aspx设置为在IIS中提供的默认文档,并且所有内部站点链接都包含URL的而不使用 default.aspx,那么我认为应该这样做。
虽然用户仍然可以输入 default.aspx ,但搜索引擎蜘蛛应该从您的链接href属性中选择更友好的URL。
答案 4 :(得分:0)
我这样做的方法是在公共类Global:System.Web.HttpApplication中使用Application_BeginRequest并检查HttpContext.Current.Request.URL for default.aspx,然后从那里使用HttpContext.Current.Response.Redirect如果你找到它。
缺点是重定向并不总是那么好,如果您将数据发布到default.aspx页面,这将不起作用。但是你不能简单地欺骗浏览器显示不同的URL,尽管你可以告诉ASP.NET为任何请求提供你想要的任何页面。