私は、nginx で実行しているサイトの書き換えルールを設定しようとしています。誰かが Web サイトにアクセスしたときに、 のコンテンツが表示されるようにしたいのですが、mysite.com/wordpress
URL は変更せず、 のままにする必要がありますmysite.com
。ただし、誰かがアクセスした場合は、mysite.com/some_file.php
そのファイルが表示される必要があります。ロケーション ブロックで、301 リダイレクトを追加すると機能しますが、書き換えルールを追加すると機能せず、example.com のルートのコンテンツが表示されます。書き換えルールを機能させる方法を教えてください。
これは機能しますが、URLが変更されますexample.com/wordpress
(これは望ましい結果ではありません)
location = / {
return 301 http://example.com/wordpress;
}
これは機能しません
PHP NGINX 構成:
location = / {
# return 301 http://example.com/wordpress;
# nginx configuration
if ($http_host ~ "^(www.)example.com$"){
rewrite ^(.*)$ /wordpress/ break;
}
if ($http_host ~ "^(.*).example.com"){
rewrite ^(.*)$ http://example.com/wordpress/%1/$1 redirect;
}
if (!-e $request_filename){
rewrite ^(.*)$ /wordpress/$1;
}
rewrite ^/(.*)index\.(php)$ http://$http_host/$1 redirect;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php;
}
答え1
これを修正するために、
try_files $uri $uri/wordpress /wordpress/index.php?$args;
場所 / ブロックに移動し、他のすべての書き換えルールを削除します。これは、最初にファイルの要求を試み、次に /wordpress サブフォルダー、次にサブフォルダー内の index.php の要求を試みることによって行われます。