3

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 とリライトを連携させる方法を知っている人はいますか?

ありがとう

ベン

4

2 に答える 2