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

本文关键字:quot Default aspx 或者 访问 何判断 判断 是否 用户 | 更新日期: 2023-09-27 18:18:50

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

为了搜索引擎优化的目的,我试图重定向用户正在看:

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

:

http://www.example.com/
我的问题是:

我怎么知道用户在看哪个?我一直在使用:

HttpContext.Current.Request.Url.*

但是不管我访问哪个,所有的参数都是相同的。

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

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

string path = Request.RawUrl;

MSDN

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

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

如果你不能在你的网页中使用<rewrite>标签。

对于以下请求:

http://domain.com/

当从HttpModule中的Begin_Request事件引用时:

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

如果您没有从Application_BeginRequest中看到这些值,您可能需要注册一个单独的HttpModule。全球。asax事件仅在托管HttpHandlers中被调用,因此在IIS进行内部重定向(传输)到"/default.aspx"之前,它们可能不会被调用。

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

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

如果你只是关心SEO,那么你可以使用规范的"tag"。

如果你把它放在默认值中。aspx页面:

<link rel="canonical" href="http://www.mysite.com/" />

Google总是会索引

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

http://www.mysite.com/

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

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

如果您请求http://www.site.com/,它将在代码运行之前重定向到http://www.site.com/default.aspx(这对浏览器是可见的!)

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

如何获取HTTP Referer:在ASP中获取HTTP Referer。净

现在,如果用户访问http://www.site.com,您的代码将看到以http://www.site.com的引用调用http://www.site.com/default.aspx。这不能告诉你它们从哪里来,但它可以告诉你它们直接访问了网站。

您在这里的优势是大多数搜索引擎都遵循重定向并抓取实际页面,因此引用值可用于判断用户是否来自搜索引擎。但是,对于其他情况,您最好查看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

请提供有关您的问题的更多信息和您的尝试

请求。Url将为您提供当前在浏览器窗口中打开的Url。你可以用它来编写你想要的代码。

你也可以使用iis。设置默认。Aspx作为你的默认页面,每当有人打开你的网站地址将是www.yoursite.com'

如果你想对用户隐藏你当前的url,那么这是不推荐的,但你可以使用url重写iis

知道它在用户的浏览器位置的最好方法是通过javascript。

如果你想从默认重定向每个人。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的$(document),但是您可以理解

使用路由和IIS重写模块的组合。您可能需要对其进行一些调整,以适应尾随斜杠(如果您想要一个或不需要)。我所有的页面名都是小写的。使用这将确保一致的301永久重定向为您的默认值。

在Global.asax:

<%@ Import Namespace="System.Web.Routing" %>
<%@ Application Language="C#" %>
<script runat="server">
    void Application_Start(object sender, EventArgs e) 
    {
        RouteTable.Routes.MapPageRoute("default", string.Empty, "~/default.aspx");       
    }

,然后在你的web.config:

<rewrite>
  <rules>    
    <rule name="Default Document" stopProcessing="true">
      <match url="(.*?)/?default'.aspx$" ignoreCase="true" />
      <action type="Redirect" url="{R:1}/" redirectType="Permanent" />
    </rule>   
  </rules>
</rewrite>

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

<asp:HyperLink ID="homeLink" runat="server" NavigateUrl="<%$RouteUrl:RouteName=default %>">HOME</asp:HyperLink>