GRAVでphp拡張子を持つページをリダイレクトする方法
Gravを使用して新しいWebサイトを作成しました。 古いサイトには、.phpで終わるURLを使用してアクセスする必要のあるページがあります URL /somefolder/somepage.phpは、「ファイルが見つかりません」というメッセージを表示します。 組み込みのGravエラーページは表示されません。
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); } }
「thrownew\RuntimeException('Page Not Found'、404);」という行を置き換えるにはどうすればよいですか。ホームページにリダイレクトするように指示がありますか?
上記のエラーは、.phpで終わる NOTのURLでのみキャッチされます
.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を削除し、.phpを.htmlに置き換えます。
また、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 /; } }
お役に立てば幸いです。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。