如何判断用户是否正在访问"/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.*
但是不管我访问哪个,所有的参数都是相同的。
您可以使用以下命令获取用户浏览器中输入的路径:
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>