如何在我的 php include 上使用块 PATH_INFO URL

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

我的服务器在我的 php 文件上生成重复的内容。

例如,它会生成如下所示的虚假页面: https://westsidelosangeles.com/surfing-zuma-beach-malibu.php/best-parks-los-angeles.php

这实际上是我的服务器在另一个页面上提供的 2 个页面。

https://westsidelosangeles.com/surfing-zuma-beach-malibu.php https://westsidelosangeles.com/best-parks-los-angeles.php

我应该将我的链接设置为绝对吗?

我应该将此代码添加到我的包含中吗?我应该在哪里添加它?

if (!empty($_SERVER['PATH_INFO'])) {
   header("HTTP/1.0 404 Not Found");
   die("nothing here"); 
}

我希望找到一种方法来阻止我的服务器生成数百个虚假页面,如我上面提供的链接。

php apache server
2个回答
0
投票

您绝对可以使用您提供的 PHP 代码片段来检查并阻止不需要的 PATH_INFO 数据。当附加路径附加到 PHP 文件 URL 时,这将有助于防止您的服务器提供内容。

您还可以将其放入脚本开头的命令包含文件中,这样可以确保在处理或输出任何内容之前进行检查。

此外,如果您使用 Apache,您可以使用 .htaccess 来阻止此类 URL

你可以做类似的事情

RewriteEngine On
# Redirect or block URLs with PATH_INFO
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^(.+)\.php/(.+)$ [NC]
RewriteRule . - [R=404,L]

此规则检查请求是否是针对不存在的目录或以 .php/ 结尾的文件,后跟更多字符,它以 404 状态代码响应

我想任何方法都应该解决您的问题,请确保在实施后对其进行良好的测试。

希望有帮助。


0
投票

谢谢你。我在开始时将下面的代码片段添加到我的 navigation.php 包含文件中,但它不起作用。

<body>
        <?php 
if (!empty($_SERVER['PATH_INFO'])) {
   header("HTTP/1.0 404 Not Found");
   die("nothing here"); 
} 
    ?>
</body>

我的服务器是IONOS。我不确定是不是APACHE

是您给我的 .htaccess 代码片段吗??

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