【问题标题】:PHP able to access pages in root directory from a page with slashPHP能够从带有斜杠的页面访问根目录中的页面
【发布时间】:2017-11-07 15:20:33
【问题描述】:

我们的 PHP 网站出现问题:http://midlandssmilecentres.co.uk/

问题如下,如果你要访问,例如http://midlandssmilecentres.co.uk/feedback.php,然后放一个斜杠,它会返回根目录的索引页。从那里,您实际上可以放置任何页面,即http://midlandssmilecentres.co.uk/feedback.php/feedback.php,它会返回该页面。我们需要停止这种行为,或者采取可行的解决方法来阻止这些页面被访问。

由于页面试图从错误的目录中获取 CSS,这给我们带来了很多关于重复内容和页面的问题。我们已尝试删除服务器上的所有 .htaccess 文件,但这并没有解决问题。我已经对带有斜杠的文件以及如何将文件解释为目录进行了大量研究,但找不到任何可以帮助我的东西。

【问题讨论】:

  • 我想我记得 15 年前曾经为我们发生过这种情况,但我完全忘记了如何解决它。我认为这是一个 apache 设置问题(htaccess 不会是问题,而且 php 肯定不会这样做)。你在运行apache吗?还是不同的网络服务器?
  • 我们的域是一个基于 Linux 的 Godaddy 域,我尝试联系他们,但他们不知道。

标签: php .htaccess url trailing-slash


【解决方案1】:

使用.htaccess,您可以重定向所有.php/... 页面:

RewriteEngine on
RewriteRule ^(.+?\.php)/ $1 [NC,L,R=301]

您也可以通过以下方式更改 apache 配置:

AcceptPathInfo Off

但在这种情况下会返回 404 错误
https://httpd.apache.org/docs/2.2/mod/core.html#acceptpathinfo

【讨论】:

  • 太棒了!这停止了​​这个问题。你知道为什么会这样吗?很高兴了解它发生的原因以及是否有办法从源头上阻止它。
  • 我认为这通常与页面中的错误 url 条目或用户有关。
  • 但是midlandssmilecentres.co.uk/feedback.php/feedback.php什么都没有,那个目录不存在,那个文件也不存在,把它放到网络浏览器中应该会返回404页面。我不明白错误的 url 条目如何导致该页面以某种方式存在?
  • 通常不会忽略斜线之后的所有内容。加上相对不良链接的问题。
【解决方案2】:

我认为您需要设置 404 REDIRECT,因此它不会返回该页面,而是重定向到 404 页面。

【讨论】:

  • 我们有一个 404 页面集,例如,如果您输入 midlandssmilecentres.co.uk/feedb 它会将您带到该页面。这里的问题是带有斜杠的文件被解释为一个目录,该目录进入根目录。
猜你喜欢
  • 2015-06-29
  • 1970-01-01
  • 2018-09-09
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多