2017-09-05 69 views
0

我使用Grav創建了一個新網站。 舊網站的頁面必須使用結束.php 的網址才能訪問url /somefolder/somepage.php只是給了我「未找到文件」。 它不會引導我進入內置的Grav錯誤頁面。如何使用GRAV中的php擴展名重定向頁面

我禁用了Grav的錯誤插件,所以它不會妨礙。

如何重寫/somefolder/somepage.php到/ somefolder/SomePage的
另外,我怎麼可以重定向任何404錯誤到主頁?
該錯誤是由處理:

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

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); 
      } 
     } 

我怎樣才能更換行「throw new \ RuntimeException('Page Not Found',404);」有指示重定向到主頁?

上述錯誤是隻抓到對於網址在.php結尾的.PHP
結尾的網址不被GRAV處理,所以我想它的Web服務器交給這些錯誤。網絡服務器是nginx/1.11.9。
我試着將下面的幾行添加到我的nginx.conf中,但是這並沒有解決問題。

error_page 404 = @foobar; 

    location @foobar { 
     rewrite .*/permanent; 
    } 

回答

1

我會在服務器端處理您的兩個問題。

如何重寫/somefolder/somepage.php到/ somefolder/SomePage的

我會做這樣的事情:

location ~ \.php$ { 
    if (!-f $request_filename) { 
     rewrite ^(.*)\.php$ $1.html permanent; 
    } 
} 

這意味着:對於要求每一個PHP文件,刪除在PHP中,並通過.html替換.php。

此外,如何將任何404錯誤重定向到主頁?

可能會出現此問題的原因是2個共性的東西:

  • HTTP標頭的問題:你不要在您的重定向更改HTTP頭,你在這兒仍服務於404之前,如果位置檢查存在,服務器搜索http代碼狀態。在這裏,它仍然是404
  • 您可以使用fastcgi_intercept_errors on;

對於這個問題,我會用這段代碼:

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

希望它能幫助!

+0

我沒有檢查這個答案的正確性,因爲Grave在管理頁面中有一個設置,它已經這樣做了。 Grav論壇上有人向我指出了這一點。不過謝謝你的回答。 –

相關問題