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

时间:2018-10-06 17:20:04

标签: php

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

例如,我没有somefolder / abc.php文件,但是去那里将运行process.php文件并在那里显示。

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

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

PS。将.htaccess添加到somefolder文件夹确实可以工作,但是随后的URL显示so​​mefolder / 404.php而不是somefolder / abc.php

3 个答案:

答案 0 :(得分:0)

修改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

答案 1 :(得分:0)

我了解到我可以将somefolder转换为somefolder.php并使用$ _SERVER ['PATH_INFO']使所有页面都存在。

答案 2 :(得分:0)

在通常情况下,只有使用.htaccess文件,然后重定向每个请求,这样才能完成此操作...

RewriteEngine On
RewriteBase /

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

此后,您可以在index.php中使用$_SERVER$_SESSION和其他全局变量来决定如何处理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/等。