可以通过 CakePHP 中的绝对乱码 URL 访问页面吗?

Pages are accessible through absolute gibberish urls in CakePHP?

我的 CakePHP (v2.5.5) 应用程序有一个动态站点地图,它使用各种方法生成 links(例如 /sitemap/career-center),然后将这些 links 传递给Router::url($generated_url, true).

我的站点地图应该在 url http://example.com/sitemap(默认路径)上可用 - 工作正常。但是,出于某种原因,Google 正在疯狂地 url 找到我的站点地图,例如:

我们系统中甚至没有任何论坛,也没有提及任何论坛。 pt-jobspt-ceusgeneral 都是我们网站的不同区域。 jsimg等是静态资产目录。但出于某种原因,这已成功路由到我的站点地图。

反过来,在这个随机 url 中找到的站点地图用相同的乱码填充其中的每个 link,使网站管理员工具充满 500 个错误。出于某种原因,站点地图可以在那个无意义的地方访问 url,但是站点地图中使用相同结构生成的 linked 都会产生错误(正如预期的那样)。

我的问题是:

如果您需要更多信息,请告诉我,我会更新该信息。

一位同事发现了这个问题的根源。

信息如下:

  • 此错误仅在某些环境中发生。不确定是什么导致了生产、QA 等之间的差异,但这种行为并非在所有情况下都会发生。

点击 url 例如: http://www.example.com/index.php/sdfasdfjklasdjfkl/x/asdkfjasd/asdfasdfeww/sitemaps/

为您提供以下内容:

[base] => /index.php/sdfasdfjklasdjfkl/x/asdkfjasd/asdfasdfeww
[webroot] => /index.php/sdfasdfjklasdjfkl/x/asdkfjasd/asdfasdfeww/ 

检查 CakePHP 文件 CakeRequest.php 后,发现以下注释:

 276  * If CakePHP is called with index.php in the URL even though
 277  * URL Rewriting is activated (and thus not needed) it swallows
 278  * the unnecessary part from $base to prevent issue #3318.
 279  *
 280  * @return string Base URL
 281  * @link https://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/3318

我们不知道这个问题 #3318 是什么 - 但似乎 'fix' 到那个问题导致这些长期疯狂的 url 起作用。在我们的例子中,这导致这些奇怪的 url 反映在正在生成的站点地图中。

注意:这并没有回答这些疯狂的 url 到底是如何由 Google 生成和到达的,但它确实解释了它们为何起作用。

我们的解决方案只是禁止 url 中包含 index.php,因为在我们的案例中启用了 url 重写。