显示受保护页面的404(不更改地址)


Show 404 for protected pages (with no address change)

我在.htaccess中设置了404错误页面,它运行良好。

ErrorDocument 404 somedir/404.php

现在,我正试图弄清楚当没有权限的用户试图访问某些页面时,如何显示该页面。

好的,到目前为止我试过什么?

逻辑表示,如果我将用户重定向到某个不存在的页面,该页面将触发404服务器响应,或者我可以将他重定向到404.php。正确,有效。

header ("location: /404.php");
exit;

通过这种方式,URL从用户要求的一个更改为(在本例中)http://www.mydomain.com/404/php。我不想改变它!我想让用户看到他请求的地址,不管那个页面是受保护的还是根本不存在。

当然,我可以绕过并加载404.php,但这让我头疼,因为它的模板引擎是如何工作的。tplEngine是如何控制模板的,如果需要,我将把它作为"B计划"。

有没有什么简单的方法可以做到这一点而不需要复杂的工作?

您可以更改文档标题以显示404错误。

header('HTTP/1.0 404 Not Found');

之后,您可以使用file_get_contents()加载404.php页面。URL将保持不变。

您可以包含404.php而不是header函数并返回自定义状态:

include ( "404.php" );
exit;

并且从404.php有这个:

http_response_code( 404 );