如何判断用户是否正在访问“/Default.aspx”或只是“/”

我正在写我的Global.asax.cs的Application_BeginRequest部分。

出于搜索引擎优化的目的,我正在尝试重定向正在查看的用户:

http://www.example.com/Default.aspx 

至:

 http://www.example.com/ 

我的问题是:

如何判断用户正在查看哪些内容? 我一直在用:

 HttpContext.Current.Request.Url.* 

但无论我访问哪一个,所有参数都是相同的。

如果它只是你关注的SEO,那么你可以使用规范的“标签”。

如果将其放在Default.aspx页面中:

  

谷歌将始终索引

 http://www.mysite.com/Default.aspx 

 http://www.mysite.com/ 

防止两个页面都被编入索引并在搜索结果中竞争。

您可以在此处阅读更多内容: http : //googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html

您可以使用以下命令获取在用户浏览器中输入的路径:

 string path = Request.RawUrl; 

MSDN

我很确定这个特定的重定向发生在IIS级别而不是你的应用程序逻辑中,或者关闭IIS中的默认页面内容?

如果您使用的是IIS 7.x,则应该查看本教程: http://weblogs.asp.net/scottgu / ….
它解释了如何为SEO设置重定向。

如果你不能在web.config中使用标签,这篇文章应该有所帮助: https://stackoverflow.com/questions/363231 / …

要求:

 http://domain.com/ 

当从HttpModuleBegin_Request事件引用时:

 HttpContext.HttpRequest.Url.AbsolutePath == "/" ... Url.AbsoluteUri = "http://domain.com/" ... Url.LocalPath = "/" 

如果您没有从Application_BeginRequest看到这些值,则可能需要注册一个单独的HttpModule 。 Global.asax事件仅针对托管的HttpHandlers调用,因此在IIS执行内部重定向(传输)到“/default.aspx”之后才可能调用它们。

您可能还需要在IIS中禁用默认文档处理,以使其在您感兴趣的方向上工作(大多数站点从//default.aspx重定向,而不是相反)。

编辑:另一个想法。 将新扩展注册为ASP.NET页面处理程序,使用构建提供程序(在web.config中) – 也许* .asph或类似的东西。 然后将现有的default.aspx重命名为default.asph 。 接下来,将default.asph添加到IIS中默认文件列表的顶部,替换default.aspx 。 创建一个新的default.aspx文件,其后面代码中唯一的function是重定向到/ 。 应该这样做。

如果您请求http://www.site.com/ ,它将在您的代码运行之前很久才会重定向到http://www.site.com/default.aspx (所有内容的浏览器都可以看到这一点!)。

我相信这意味着检查HTTP-Referer的值会告诉你你想知道什么。

如何获取HTTP Referer: 在ASP.NET中获取HTTP Referrer

现在,如果用户访问了http://www.site.com ,您的代码将看到http://www.site.com/default.aspx与http://www.site.com的 referer调用。 这并没有告诉你他们来自哪里,但它确实告诉你他们直接访问了网站。

您的优势在于,大多数搜索引擎都遵循重定向并抓取实际页面,因此引用值可用于判断用户是否来自搜索引擎。 但是,对于其他情况,您最好不要使用IIS日志。

请注意,由于ASP.NET重定向/到/default.aspx中的基础结构,您无法将/default.aspx重定向到/不创建无限循环。 如果你想直接服务,你将需要在IIS前面垫片。

你可以试试

 HttpContext.Current.Request.Url.* 

参数错误:

所以让你的网站访问者url:

 Request.AppRelativeCurrentExecutionFilePath 

了解更多信息:

http://msdn.microsoft.com/en-us/library/system.web.httprequest.apprelativecurrentexecutionfilepath.aspx

请提供更多信息,并尝试解决您的问题

Request.url将为您提供在浏览器窗口中打开的当前URL。 您可以使用它来编写您想要的代码。

您也可以使用iis执行此操作。 将Default.aspx设置为您的默认页面,每当有人打开您的网站时,地址将为www.yoursite.com \

如果您试图隐藏用户当前的url,则不推荐使用,但您可以使用url重写iis

了解用户浏览器位置的最佳方法是通过javascript。

如果您想将所有人从Default.aspx重定向回www.mysite.com,您可以执行以下操作:

 $(document).ready(function() { if(window.location.href == "http://www.mysite.com/Default.aspx") window.location.href = "http://www.mysite.com/" }); 

注意:这依赖于$(文档)的jquery,但是你明白了

使用路由和IIS重写模块的组合。 你可能需要调整它以适应尾部斜杠(如果你想要一个或不是)。 我的所有页面名称都是小写的。 使用此function可以确保为default.aspx页面提供一致的301永久重定向,并符合SEO最佳实践。

在Global.asax中:

 <%@ Import Namespace="System.Web.Routing" %> <%@ Application Language="C#" %>  

然后在你的web.config中:

         

如果您不熟悉路由,则可以通过以下链接访问主页:

 HOME