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

gun*_*win 15 .net c# asp.net c#-4.0

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

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

http://www.example.com/Default.aspx
Run Code Online (Sandbox Code Playgroud)

至:

http://www.example.com/
Run Code Online (Sandbox Code Playgroud)

我的问题是:

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

HttpContext.Current.Request.Url.*
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*ler 11

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

string path = Request.RawUrl;
Run Code Online (Sandbox Code Playgroud)

MSDN

  • 在我的拙见中,你不应该相信这种方法 - "Request.RawUrl"返回超出根路径(检查MSDN)的任何内容,包括查询字符串......它发生在IIS在请求开始时完成任何重定向之后.我强烈建议你看看像RickNZ或Joshua这样的答案......你也可以尝试使用UrlRewrite模块. (3认同)

Jam*_*ers 2

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

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

<link rel="canonical" href="http://www.mysite.com/" />
Run Code Online (Sandbox Code Playgroud)

谷歌将始终索引

http://www.mysite.com/Default.aspx
Run Code Online (Sandbox Code Playgroud)

作为

http://www.mysite.com/
Run Code Online (Sandbox Code Playgroud)

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

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