我有一个域,我希望https://www.example.com/someFolder/之后的每个尝试访问的URL都不会给出错误,而是给出一个php页面。
例如,我没有somefolder / abc.php文件,但是去那里将运行process.php文件并在那里显示。
我试图将404页面修改为process.php,但这也修改了我不想要的example.com/错误页面。
如果我不需要在根目录下修改/添加文件,那就太好了
PS。将.htaccess添加到somefolder文件夹确实可以工作,但是随后的URL显示somefolder / 404.php而不是somefolder / abc.php
答案 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/等。