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

时间:2014-04-28 21:44:19

标签: php .htaccess redirect http-status-code-404

我在.htaccess设置了 404 错误页面,但效果很好。

ErrorDocument 404 somedir/404.php

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

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

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

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

这样,网址就会从用户要求的更改为(在此示例中)http://www.mydomain.com/404/php。我不想改变它!我希望用户看到他请求的地址,无论该页面受到保护还是根本不存在。

当然,我可以解决并加载404.php,但这让我头疼,因为它的模板引擎的工作方式。关于tplEngine如何控制模板的整个哲学,我将其留作" Plan B"如果需要的话。

有没有简单的方法可以做到这一点,没有复杂的工作?

2 个答案:

答案 0 :(得分:1)

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

include ( "404.php" );
exit;

来自404.php有这个:

http_response_code( 404 );

答案 1 :(得分:1)

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

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

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