为什么 Apache 将 PHP 文件视为文件夹或虚拟 URL?

问题描述 投票:0回答:2

我有一个网址为

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
,因为我认为我有一些不好的规则,但事实并非如此。

php apache .htaccess
2个回答
1
投票

PHP 的默认行为。在实现 前端控制器模式 时非常有用,因为您可以通过

$_SERVER
超全局检查完整路径。

利用

canonical
链接避免搜索引擎中出现重复内容。


0
投票

正如 @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。

© www.soinside.com 2019 - 2024. All rights reserved.