URLから「index.php」を除去する設定について

2018年1月17日 at 23:15

環境
centos7系、nginx1.12.2、php7.0.27

urlに入ってくる「index.php」を削除しようと考え、
システムと設定→SEOと統計→URLとリダイレクト
の画面より、「プリティーURL」のチェックボックスをONにしました。

しかし、「サーバー設定を読み込めませんでした。 サーバー設定にこの設定のセクションを追加してください。」との表示。(添付の画面)
(apacheだったら、htaccessを追加してくれたりしたのかなと思いますが、nginxはこのようになるんですかね。)
表示されたサンプルのlocationディレクティブを設定したところ、topページ(https://【ドメイン】/concrete5/)以外はindex.phpなしでアクセス可能になりましたが、topページだけはエラー(403 forbidden)となりました。

原因は、indexディレクティブにindex.phpがなかったことだったようで、下記のようにindexディレクティブを追加したところ、topページもindex.phpなしでアクセスできました。

location /concrete5/ {
index index.php;
try_files $uri $uri/ /concrete5/index.php?$query_string;
}

そこで、表示されるサンプルのlocationディレクティブについて、最初から上記のようにindexディレクティブが付与された方が良いのかもしれない、と考えました。
他の機能を全て確認してはいないので確信は持てませんが、他で問題がなければおそらくこちらの方が良いのかと思います。

以上、参考までに。

タグ:

Re: URLから「index.php」を除去する設定について

2018年3月9日 at 20:45
遅レスですいません。index index.php ですが、location の外に書くことも多いので、入ってないのかも…。難しいとこですかね。Nginxの設定はコレと言うものはなく割とみなさん書き方が違う気がします。