我使用Grav创建了一个新网站。 旧网站的页面必须使用以.php结尾的网址进行访问 url /somefolder/somepage.php只是给了我"找不到文件"。 它不会引导我进入内置的Grav错误页面。
我禁用了Grav的错误插件,因此它不会妨碍。
如何将/somefolder/somepage.php重写为/ somefolder / somepage
另外,如何将任何404错误重定向到主页?
错误由以下方式处理:
/var/www/grav-admin/system/src/Grav/Common/Processors/PagesProcessor.php
compile project(':resources/library')
如何更换行"抛出新的\ RuntimeException(' Page Not Found',404);"有重定向到主页的说明吗?
以上错误仅针对以.php结尾的 NOT 网址捕获 以.php结尾的网址不是由Grav处理的,所以我猜它是处理这些错误的网络服务器。 Web服务器是nginx / 1.11.9 我尝试将下面的行添加到我的nginx.conf中,但这并没有解决问题。
if (!$page->routable()) {
// If no page found, fire event
$event = $this->container->fireEvent('onPageNotFound');
if (isset($event->page)) {
unset ($this->container['page']);
$this->container['page'] = $event->page;
} else {
throw new \RuntimeException('Page Not Found', 404);
}
}
答案 0 :(得分:1)
我会在服务器端处理你的两个问题。
如何将/somefolder/somepage.php重写为/ somefolder / somepage
我会做类似的事情:
location ~ \.php$ {
if (!-f $request_filename) {
rewrite ^(.*)\.php$ $1.html permanent;
}
}
这意味着:对于每个请求的php文件,删除php并用.html替换.php。
另外,如何将任何404错误重定向到主页?
由于两件常见的事情,可能会出现此问题:
fastcgi_intercept_errors on;
对于这个问题,我会使用这段代码:
server {
...
index index.html index.php
error_page 404 = @hpredirect;
...
location @hpredirect {
return 301 /;
}
}
希望它有所帮助!