Apache サーバーから Nginx サーバーに移動する必要がある Web サイトがあります。
この Web サイトの .htaccess ファイルは次のとおりです。
RewriteEngine on
RewriteRule ^([^/\.]+)/?$ $1.php [L]
これにより、www.example.com/hello が www.example.com/hello.php にリダイレクトされ、元のリンクは保持されますが、URL の末尾から .php が省略されます。
これをNginxサーバーブロックで複製しようとしました..
location / {
# Check if a file exists, or route it to index.php.
try_files $uri $uri/ /index.php;
}
rewrite ^/([a-z]+)$ /$1.php last;
書き換えルールは機能し、すべてのリンクを .php ファイルにリダイレクトしますが、ファイルが存在しない場合にディレクトリ内を検索するための Nginx の try_files ルールを破ります。
以下の管理者の例のリンクは、その中に index.php ファイルがあるフォルダーです。
www.example.com/admin
try_files はこれを..にリダイレクトする必要があります。
www.example.com/admin/
admin.phpというファイルがないので。代わりに、「入力ファイルが指定されていません」というメッセージが表示されます。
書き換えを削除すると、try_files は正しく機能します。ただし、この書き換えルールがないと、サイトの残りの部分は機能しません。
try_files とリライトを連携させる方法を知っている人はいますか?
ありがとう
ベン