2010-06-28 91 views
3

谷歌的网站管理员工具已经开始显示我的网站的一些非常奇怪的内部链接。它看起来“正常”,但我不知道该怎么做。如果你使用圆括号并放入一个单独的字母,然后在字面上将任何东西放在括号中,链接就起作用。我搜索了任何其他MVC网站,以便我可以看到它们是否具有相同的行为。微软的网站也出现在名单的顶端,并有一个奇怪的链接。搜索词条是“asp.net mvc的网站”,我得到了第一个链接是为:奇怪的ASP.NET MVC链接(A(anythingworksherehere))

http://www.asp.net/(S(d35rmemuuono1wvm1gsp2n45))/mvc

我不喜欢这样的。您可以将S更改为A或任何其他字母,然后在下一部分中放入您想要的任何文本。任何人都知道如何阻止它?对于我的生活,我看不到我的路线有任何问题。我使用MVC,所以我不会有奇怪的URL在搜索引擎中浮动,所以这非常令人失望。

最近我可以从Google的“内部链接”列表中猜出它可能是一个cookie。但是当我在我的网站上查看源代码时,我找不到任何情况,除了正确的相关链接外,其他任何东西都看不到。

+0

这看起来很奇怪。我相信你已经检查过了,但是如果你的代码有一件事可以检查,那就是确认你没有在linkgeneration中交换routeValues和htmlProperties参数。 – Terje 2010-06-28 18:23:11

+0

我会再次检查,但我仍然无法让我的网站生成这样的链接。如果谷歌没有记录他们,我永远不会知道这甚至是可能的。我不确定能否将随机数据放入www.asp.net的链接让我感觉更好,或者更担心我... – 2010-06-28 18:29:57

+0

我测试了更多被识别为ASP.NET MVC的站点并注入了http://www.somehost.com/(A(whatever-text-you-want))/validlink到所有这些URL的作品。 – 2010-06-28 18:37:54

回答

1

看起来像无cookie会话打开时使用的会话ID格式(Web.config中的<sessionState cookieless="true" />)。这似乎是一般的ASP.NET行为,不仅仅是MVC,因为我可以用VS 2010中的标准3.5网站项目重现此行为。

似乎ASP.NET将以该形式处理值,如它是一个会话ID,即使您没有打开无cookie会话。

很难在没有看到您的实际网站配置和日志的情况下诊断情况,但如果我必须猜测,我会说Google的网站管理员工具没有将请求中的会话cookie返回到您的网站,所以网站正在回落到无cookie方法,以维持会话。

+0

www.asp.net网络论坛中的某人也建议使用无Cookie会话,但我不认为这是个问题。如果我制作一个简单地使用host.com/(session_variable)/ invalid-link的URL,则不起作用。我必须有这个奇怪的东西(A(测试文本)),第一部分只包含一个字母。如果我做到了(AA(测试文本)),它就会失败。我现在向Web.config添加了(我之前没有条目),行为也是一样的。 – 2010-06-28 20:39:32

+0

那么,我应该说手动注入文本仍然工作是一样的我从来没有能够复制谷歌如何得到这些网址,所以你可以是正确的,我真的不知道如果这是无cookie =“错误”的事情那么它会很好,如果修复它。现在我仍然担心(A(测试文本))仍然适用于我尝试过的每个MVC站点。:-( – 2010-06-28 20:45:03

+0

'host.com/( session-id)/ x'是.NET 1.1格式,从2.0开始,它切换到'host.com/(S(激情 - id))/ x'格式,看起来任何大写字符都可以代替“S”。ASP.NET似乎总是以这种格式处理URL作为无Cookie会话ID,即使你不打算使用它们,你可以在任何ASP.NET 2.0+站点上重现行为,已经能够确定。 – 2010-06-28 21:04:25