.htaccess url中.php之后不存在的文件夹不提供404(index.php/sdfsf/)
我的网站有一个问题,因为在.php文件之后的每个不存在的文件夹或url都不被视为404 示例: 该示例显示了my index.php的精简版本,但它应该显示一个404或更好的重定向到index.php 我在我的网站上的每个.php文件中都发现了这个bug 示例: 如何解决这个问题?因为谷歌开始索引这些不存在的页面,这会导致重复的内容 我在谷歌上搜索过,但找不到正确的搜索词来找到这个问题的答案.htaccess url中.php之后不存在的文件夹不提供404(index.php/sdfsf/),.htaccess,url,redirect,mod-rewrite,url-rewriting,.htaccess,Url,Redirect,Mod Rewrite,Url Rewriting,我的网站有一个问题,因为在.php文件之后的每个不存在的文件夹或url都不被视为404 示例: 该示例显示了my index.php的精简版本,但它应该显示一个404或更好的重定向到index.php 我在我的网站上的每个.php文件中都发现了这个bug 示例: 如何解决这个问题?因为谷歌开始索引这些不存在的页面,这会导致重复的内容 我在谷歌上搜索过,但找不到正确的搜索词来找到这个问题的答案 非常感谢在脚本标记.php被添加为名为PATH\u INFO的环境变量后所做的任何事情 首先也是最重要的
非常感谢在脚本标记
.php
被添加为名为PATH\u INFO
的环境变量后所做的任何事情
首先也是最重要的,你需要弄清楚这些链接是从哪里来的,谷歌是从某处获得它们的,你应该关闭它们,不管是坏的内部链接还是坏的网站地图,谁知道呢
您可以在Apache中禁用Accept Path Info
,甚至可以在.htaccess
文件中添加acceptpath Info off
您还可以将任何访问重定向到具有路径信息且带有301
或410
重定向头的脚本,如下所示:
if( $_SERVER['PATH_INFO'] ){
$redirect = current( explode( '.php/', (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]" ) ).'.php';
header('HTTP/1.1 410 Gone');
header('Location: '. $redirect);
exit();
}
嗨,我不能使用基于php的解决方案。这将包括太多的编辑。我必须编辑每个.php文件以包含此检查。您的“AcceptPathInfo关闭”不起作用。我试过这个,它似乎起到了作用,但我不知道它是否有任何不必要的副作用。重写cond%{REQUEST_FILENAME}-重写规则(.*.php/(.*)$[L,R=301]