我在Global.asax.cs的Application_BeginRequest部分写作。
出于搜索引擎优化的目的,我正在尝试重定向正在查看的用户:
http://www.example.com/Default.aspx
为:
http://www.example.com/
我的问题是:
如何判断用户正在查看哪些内容?我一直在用:
HttpContext.Current.Request.Url.*
但无论我正在访问哪一个参数,所有参数都是相同的。
答案 0 :(得分:11)
答案 1 :(得分:4)
我很确定这个特定的重定向发生在IIS级别而不是你的应用程序逻辑中,或许会关闭IIS中的默认页面内容吗?
答案 2 :(得分:4)
如果您使用的是IIS 7.x,则应该查看本教程:http://weblogs.asp.net/scottgu/...。
它解释了如何为SEO设置重定向。
如果您无法在web.config中使用<rewrite>
标记,则此帖子应该有所帮助:https://stackoverflow.com/questions/363231/...
答案 3 :(得分:4)
请求:
http://domain.com/
从Begin_Request
中的HttpModule
事件引用时:
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
文件,其后面代码中唯一的功能是重定向到/
。应该这样做。
答案 4 :(得分:2)
如果只是你关注的SEO,那么你可以使用规范的“标签”。
如果您将其放在Default.aspx页面中:
<link rel="canonical" href="http://www.mysite.com/" />
Google将始终编入索引
http://www.mysite.com/Default.aspx
as
http://www.mysite.com/
阻止两个网页被编入索引并在搜索结果中竞争。
您可以在此处阅读更多内容:http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
答案 5 :(得分:1)
您可以尝试
HttpContext.Current.Request.Url.*
参数错误:
所以请通过以下方式获取您的网站访问者网址:
Request.AppRelativeCurrentExecutionFilePath
了解更多信息:
请提供更多信息并尝试解决您的问题
答案 6 :(得分:1)
如果您请求http://www.site.com/,它会在您的代码运行之前很久才会重定向到http://www.site.com/default.aspx(所有内容的浏览器都可以看到这一点!)。
我相信这意味着检查HTTP-Referer的值会告诉你你想知道什么。
如何获取HTTP Referer:Getting the HTTP Referrer in ASP.NET
现在,如果用户访问了http://www.site.com,则您的代码会看到http://www.site.com/default.aspx,并使用http://www.site.com的引用进行调用。这并没有告诉你他们来自哪里,但它确实告诉你他们直接访问了网站。
您的优势在于大多数搜索引擎都遵循重定向并抓取实际页面,因此引用值可用于判断用户是否来自搜索引擎。但是,对于其他情况,最好不要使用IIS日志。
请注意,由于ASP.NET重定向/到/default.aspx中的基础结构,您无法将/default.aspx重定向到/不创建无限循环。如果你想直接服务,你需要在IIS前面提供一个垫片。
答案 7 :(得分:0)
Request.url将为您提供在浏览器窗口中打开的当前网址。 您可以使用它来编写您想要的内容。
您也可以使用iis执行此操作。将Default.aspx设置为默认页面,每当有人打开您的网站时,地址将为www.yoursite.com \
如果您试图隐藏用户当前的网址,则不推荐使用,但您可以使用网址重写iis
答案 8 :(得分:0)
了解用户浏览器位置的最佳方法是通过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 for $(document),但是你明白了
答案 9 :(得分:0)
使用路由和IIS重写模块的组合。您可能需要调整此值以适应尾部斜杠(如果您需要或不需要)。我的所有页面名称都是小写的。使用此功能可以确保为default.aspx页面提供一致的301永久重定向,并符合SEO最佳实践。
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>