gpt4 book ai didi

php - htaccess 中的自定义 404 错误处理程序不适用于不存在的 ".php"文件

转载 作者:行者123 更新时间:2023-12-05 03:37:21 25 4
gpt4 key购买 nike

我正在使用自定义错误处理系统。

.htaccess 文件命令示例:

ErrorDocument 404 /error-deal.php?code=404

error-deal.php 文件存在并处理 $_GET 变量,如果我直接输入 URL,它应该这样做。

带有文件扩展名的页面不会触发 .htaccess 重定向到错误页面:

https://example.com/does-not-exist.php

但是没有扩展名的 URL 确实...

https://example.com/does-not-exist

我在这里错过了什么?

其他重写规则是:

#force https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NC]

#redirect all www to non www
RewriteCond %{HTTP_HOST} ^www.donbur.co.uk$
RewriteRule (.*) https://donbur.co.uk/$1 [R=301,L]

#URL re-writes for dynamic pages

#to handle all news requests
RewriteRule ^news/([^/]*)$ /gb-en/news/article.php?title=$1 [L]

#to handle all feature requests
RewriteRule ^features/([^/]*)$ /gb-en/features/feature.php?title=$1 [L]

最佳答案

Pages with file extensions don't trigger the htaccess redirect to the error page:

如评论中所述,这似乎只影响具有 .php 扩展名的 URL。这可能是由于在您的服务器上实现 PHP 的方式所致。例如,如果所有 *.php 请求都被代理到另一个后端进程,那么这将绕过应用程序服务器上的 .htaccess 文件。

不幸的是,由于这似乎是一个共享服务器,您可能对此没有任何控制权。

但是,您可以尝试一些事情。尽管您似乎在整个站点中使用以 .php 结尾的 URL 这一事实阻碍了这一点。

在设置您的自定义错误文档之前,尝试重置默认错误文档。 ErrorDocument 应该覆盖以前的设置,但是,有时当它在服务器配置中定义时,它不会。例如:

ErrorDocument 404 default
ErrorDocument 404 /error-deal.php?code=404

如果不是因为您在网站上使用了 .php URL(尽管令人困惑的是,您似乎混合使用了 .php 和无扩展名URLs throughout your site?) 那么你可以使用 mod_rewrite 强制所有 .php 请求到 404(尽管这仍然可能不会覆盖默认的错误响应)。

您可以在您的规范重定向(HTTP 到 HTTPS 和 www 到非 www)之后尝试以下操作:

# Force a 404 for ".php" requests that don't exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.php$ - [R=404]

如果您没有任何 .php URL,那么您可以删除前面的 RewriteCond 指令。


旁白:您应该确保 /error-deal.php 文档本身不可直接访问。这当前为非错误返回 200 OK 状态,并且似乎没有任何东西(机器人元标记、响应 header 、robots.txt)阻止搜索引擎抓取/索引此页面( s).

关于php - htaccess 中的自定义 404 错误处理程序不适用于不存在的 ".php"文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69361909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com