【发布时间】:2017-06-29 04:34:53
【问题描述】:
我今天在工作网站上偶然发现了一些奇怪的行为。我们的 SEO 顾问希望从 Google 的索引中删除一些看起来很奇怪的链接,这是一项看似简单的任务。但事实证明这是非常困难的。
该网站是一个 .net MVC 5.2.3 应用程序。我们查看了路由、我们自己的库等。没什么奇怪的。一段时间后,我们放弃并尝试通过在 web.config 中设置规则将请求简单地重定向到这些 url。原来这些 URL:s 是无与伦比的!不知何故,在适当的条件下,URL 的关键部分似乎避免了匹配规则以及稍后在 MVC 应用程序中的路由。
我们将神秘的 URL:s 缩小为 (T(anything)) 的格式,其中 T 可以是任何大写字母,任何东西都可以是呃,任何东西。它被放置在 URL 的开头,就好像它是一个目录一样。在正则表达式中:\([A-Z]\([a-zA-Z0-9]*\)\)
我已经测试并发现了相同的行为:
- .net MVC5 网站
- .net MVC3 网站
- .net Web 表单站点
- http://asp.net
- http://stackoverflow.com
stackoverflow.com 中的一些示例:
- 绕过路由:https://stackoverflow.com/(K(jonas))/questions
路由正常 (404):https://stackoverflow.com/jonas/questions
绕过路由:https://stackoverflow.com/(G(hello))/users/1049710/jonas-%C3%84ppelgran
- 路由正常(404):https://stackoverflow.com/gandhello/users/1049710/jonas-Äppelgran
它似乎不会影响整个网络,所以它不应该是浏览器或 HTTP 问题。一些例子:
- 路由正常(404):http://php.net/(T(testing))/downloads
- 路由正常(404):https://www.iana.org/(T(testing))/domains/reserved
谁能解释发生了什么?
我能做些什么来禁止这些 URL:s 绕过路由?
【问题讨论】:
标签: asp.net web-config uri