(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Nginx】末尾にスラッシュ/をつけないと301 Moved Permanentlyとなる事象を解消する

スポンサーリンク

事象

sample/index.htmlにアクセスさせるために/sampleとたたいた際に以下となる。

$ curl localhost/sample
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.24.0</center>
</body>
</html>

尚、末尾にスラッシュをつけると正常に用意したものが表示される。

$ curl localhost/sample/
my sample page
環境情報
$ nginx -v
nginx version: nginx/1.24.0

解決策

nginx.confに以下を記載する。

rewrite ^([^.]+[^/])$ $1/ break;

再読み込みを行うと上記の事象は解消する。

# systemctl restart nginx
# curl localhost/sample
my sample page

以下、補足です。

補足

/etc/nginx/nginx.confのドキュメントルートが以下の場合に

...
    server {
...
        root         /usr/share/nginx/html;

ファイルを配置するとパスを指定することで表示ができます。

$ ls /usr/share/nginx/html/sample/
index.html

ただし末尾にスラッシュをつけない場合は正しく表示されないため、リライト機能で/を付与しています。

rewrite regex replacement [flag];

今回のケースでは以下のように記載をすればそれで事足りますが

rewrite ^/(sample)$ /sample/ break;

解決策ではそれを正規表現にすることで任意のパスに対しても実施するようにしています。

以上、ご参考になれば幸いです。