如何在GRAV中使用php扩展重定向页面

如何在GRAV中使用php扩展重定向页面,php,redirect,grav,Php,Redirect,Grav,我用Grav创建了一个新网站。 旧站点的页面必须使用URL ending.php进行访问 url/somefolder/somepage.php只是给了我一个未找到的文件。 它不会引导我进入内置的Grav error页面 我禁用了Grav的错误插件,所以它不会碍事 如何将/somefolder/somepage.php重写为/somefolder/somepage 另外,如何将404错误重定向到主页? 错误由以下人员处理: /var/www/grav admin/system/src/grav/

我用Grav创建了一个新网站。 旧站点的页面必须使用URL ending.php进行访问 url/somefolder/somepage.php只是给了我一个未找到的文件。 它不会引导我进入内置的Grav error页面

我禁用了Grav的错误插件,所以它不会碍事

如何将/somefolder/somepage.php重写为/somefolder/somepage 另外,如何将404错误重定向到主页? 错误由以下人员处理:

/var/www/grav admin/system/src/grav/Common/Processors/PagesProcessor.php

如何替换行throw new\RuntimeException'Page Not Found',404;有重定向到主页的指令吗

以上错误仅在URL不以.php结尾时被捕获 以.php结尾的URL不是由Grav处理的,所以我猜是web服务器处理这些错误。web服务器是nginx/1.11.9。 我尝试将下面的行添加到我的nginx.conf中,但这并没有解决问题

error_page 404 = @foobar;

    location @foobar {
      rewrite  .*  / permanent;
    }

我会在服务器端处理您的两个问题

如何将/somefolder/somepage.php重写为/somefolder/somepage

我会这样做:

location ~ \.php$ {
  if (!-f $request_filename) {
      rewrite ^(.*)\.php$ $1.html permanent;
  }
}
这意味着:对于每个请求的php文件,删除php并用.html替换.php

另外,如何将404错误重定向到主页

出现此问题的原因可能有两个:

http头问题:您没有在重定向中更改http头,所以您仍然提供404。在检查位置是否存在之前,服务器将搜索http代码状态。在这里,它仍然是404。 您可以在上使用fastcgi_intercept_错误; 对于这个问题,我将使用以下代码:

server {
  ...
  index index.html index.php
  error_page 404 = @hpredirect;
  ...
  location @hpredirect {
    return 301 /;
  }
}

希望有帮助

我没有检查这个答案的正确性,因为Grave在管理页面中已经有了这样的设置。Grav论坛上有人向我指出了这一点。不过还是谢谢你的回答。
server {
  ...
  index index.html index.php
  error_page 404 = @hpredirect;
  ...
  location @hpredirect {
    return 301 /;
  }
}