当页面不存在时,不要创建错误页面

  • 本文关键字:创建 错误 不存在 php
  • 更新时间 :
  • 英文 :


我有一个域,我希望 https://www.example.com/someFolder/之后的每个尝试的网址都不会给出错误,而是给出一个php页面。

例如,我没有 somefolder/abc.php 文件,但去那里会运行一个进程.php文件并在那里显示它。

我试图修改 404 页面作为过程.php但这也修改了我不想要的 example.com/错误页面。

如果我不需要在根目录中修改/添加文件,那就太好了

向 somefolder 文件夹添加 .htaccess 确实有些工作,但随后 url 显示 somefolder/404.php而不是 somefolder/abc.php

修改您的 404 页面,就像您在那里放置 php 脚本一样,但检查 php 请求的 url 是否是目录。 根据这一点,采取适当的行动

<?php
$url = $_SERVER[REQUEST_URI];
// check if requested url was ending with slash
$pattern = '#/$#';
$result = preg_match($pattern, $url);
if ($result === 1) {
//request was to directory suffixed with slash
//do your php code for custom 404
die; //end the page generation
}
?>
request was not to directory ending with slash
put html of regular 404 page here or leave it blank

我了解到我可以将某个文件夹变成某个文件夹.php并使用 $_SERVER['PATH_INFO'] 使所有页面都存在。

在一般情况下,这只能通过使用.htaccess文件并像这样重定向每个请求来完成......

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

之后,你可以在index中使用$_SERVER$_SESSION和其他全局变量.php来决定如何处理404错误(即,你可以在这里实现如何定义404是什么,等等(。

例如,$_SERVER['PATH_INFO']将能够告诉您请求的URL,并且您可以使用file_exists()和其他调用的组合来确定是要显示完整的404,搜索结果,重定向,还是仅显示另一个脚本的结果。

这适用于 example.com/somefolder/、example.com/some/other/folder/和 example.com/a/b/c/d/e/f/g/等。

最新更新