如何在GRAV中重定向带有php扩展名的页面

时间:2017-09-05 03:13:11

标签: php redirect grav

我使用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);
            }
        }

1 个答案:

答案 0 :(得分:1)

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

  

如何将/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_errors on;

对于这个问题,我会使用这段代码:

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

希望它有所帮助!