【问题标题】:I want to display an 404 error without redirecting我想在不重定向的情况下显示 404 错误
【发布时间】:2021-01-19 22:04:59
【问题描述】:

我需要在所有无效页面中显示 404 错误页面而不重定向它们。 当前,当输入 /wrong-page 时,它​​会重定向到 /404。但我想在 /wrong-page 中显示 404 页面的内容。

另外我的网站不使用 PHP,那么有没有办法用 html 和 js,甚至用 htaccess 来做到这一点?

【问题讨论】:

标签: javascript html .htaccess


【解决方案1】:

要使用 PHP 进行控制,您需要使用 .htaccess 文件。

例如,如果你想处理一些脚本,那么这个.htaccess文件......

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,NC,L]

将重定向到index.php而不重写 URL。这意味着您可以简单地控制 index.php 中的异常处理...

$someNon404Condition = file_exists($_SERVER['PHP_SELF']);
if ($someNon404Condition) {
    include($_SERVER['PHP_SELF']);   // do the stuff
} else {
    print("404!  Why are you trying to access " . $_SERVER['PHP_SELF'] . "?");
}

这将使您更好地控制为404 显示的错误,例如,您可以让页面显示Unable to process $_SERVER[SCRIPT_NAME] for URL 123/456/, 等。

这也可以让您做很多其他事情!忘记一个静态的 404.html 页面,你可以使用动态页面...

  • 您的情况可以像您编写的代码一样复杂:检查身份验证、检查永久重定向,也许您想自动使内容过期?等等等等。
  • 在您的数据库中搜索explode('/', $_SERVER['PHP_SELF']),然后在标题“也许这就是您要找的东西?”下显示这些匹配结果的列表。
  • 响应用户级事件:是否因为页面被移动而导致 404?然后处理重定向。 404 是不是因为版主删除了它并且是用户的帖子?告诉用户版主删除了他们的帖子。等等等等。
  • 做API调用、动态代码等等等等,可能性是有的。

【讨论】:

    【解决方案2】:

    您可以使用.htaccess 文件
    把它放在你的.htaccess

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ 404.html [L]
    

    404.html 必须是出现 404 错误时必须显示的错误页面。

    【讨论】:

    • 是的,我目前正在使用它。但它重定向到另一个页面。我希望 404 以相同的 url 显示在同一页面中。
    • 我已经改变了答案。看看这现在是否有效:)
    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多