我有一个文件secret.php
,它包含在index.php
中,当有人试图直接访问secret.php
时,我想显示404错误页面。但
header("Location: this_site_certainly_does_not_exist");
secure.php
中的不是解决方案,因为我希望在显示错误页面时,用户键入的URL(例如example.com/secret.php
)在浏览器的URL栏中可见,而不是重定向。 / p>
答案 0 :(得分:10)
你可以用标题来做。
header("HTTP/1.0 404 Not Found");
然后您可以使用例如readfile
方法添加您的404页面。
header("HTTP/1.0 404 Not Found");
echo "<h1>404 Not Found</h1>";
echo "The page that you have requested could not be found.";
exit();
答案 1 :(得分:1)
您需要向客户端发送html 404状态代码。您可以通过以下方式实现: http://www.php.net/manual/en/function.http-response-code.php
答案 2 :(得分:0)
我不明白为什么你想在浏览器中保留它,最佳做法是将用户重定向到404页面。
我建议使用apache(.htaccess)或nginx重定向。
答案 3 :(得分:0)
我不确定您的应用程序架构,但Codeignter通过包含所有文件中使用的公共文件(在它们的情况下为index.php)来实现此目的
index.php文件包含一个定义
define('BASEPATH', $system_folder.'/');
然后在只应被包含在其他文件中使用的文件中
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
了解如何根据自己的情况采用该方案。
答案 4 :(得分:-1)
对于永久性解决方案,您可以使用.htaccess在调用secret.php时重定向
# Mod for redirecting specific URL requests to a custom error page
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^/secret.php [NC]
RewriteRule . /your-error-page.php [L]
# End of custom mod