我有一个网址为
https://example.com/file.php
的网站。我不使用 URL 友好、框架等。但我看到 google 从我的网站中获取重复的内容,但 URL 不存在,例如:
https://example.com/file.php/file2.php
https://example.com/file.php/file3.php
https://example.com/file.php/file3.php/hihi/other/other2.php (status 200)
但是该 URL 不存在。在这两种情况下都显示来自
file.php
的内容。我删除了我的 .htaccess
,因为我认为我有一些不好的规则,但事实并非如此。
正如 @Quentin 已经指出的 - 这是 PHP 的默认设置。或者,更具体地说,处理 PHP 的 Apache 处理程序默认允许 path-info(URL 上的附加路径名信息)。普通
text/html
文件不允许路径信息,除非明确启用。
例如,给出以下 URL:
https://example.com/file.php/<anything>
其中
file.php
是文件系统上的物理文件,然后 /<anything>
是附加路径名信息。并且可通过 $_SERVER['PATH_INFO']
变量供 PHP 使用。
但是,您可以使用
.htaccess
指令在 AcceptPathInfo
中禁用此功能:
AcceptPathInfo Off
现在任何包含 path-info 的 URL 都会触发 404 Not Found。