Nginx Wordpress サブディレクトリ + wp admin

Nginx Wordpress サブディレクトリ + wp admin

このスレッドに似たようなものが他にもあることは知っていますが、すでに何日も試しましたが、Ubuntu 18の以下のnginx構成では現在これを通過できません。

server {
        listen 80;
        root /var/www/html/wordpress/public_html;
        index index.php index.html;
        server_name "example.com";

    access_log /var/log/nginx/SUBDOMAIN.access.log;
        error_log /var/log/nginx/SUBDOMAIN.error.log;

 location /blog {
         index index.php index.html index.htm;
         try_files $uri $uri/ /blog/index.php?q=$uri&$args;

        location ~ \.php$ {
                     include snippets/fastcgi-php.conf;

                     fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        }
    }

        location ~ /\.ht {
                     deny all;
        }

        location = /favicon.ico {
                     log_not_found off;
                     access_log off;
        }

        location = /robots.txt {
                     allow all;
                     log_not_found off;
                     access_log off;
       }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                     expires max;
                     log_not_found off;
       }}

これが私のフォルダの現在の構造です

  • /var/www/html/wordpress/public_html -> blog フォルダーと 1 つの単純な index.html を含めます (WordPress には提供されません)
  • /var/www/html/wordpress/public_html/blog -> は私のWordPressファイルの場所です

しかし、解決する必要がある間違った部分が 2 つあります。

  1. 「mysite.com/blog」は正常に表示されますが、任意のブログまたは URL をクリックすると、「example.com/?p=1」と表示され、場所 / (「example.com」) の単純な index.html に移動します。
  2. wp-admin にもアクセスできません。"example.com/blog/wp-admin" -> "http://example.com/wp-login.php?redirect_to=http%3A%2F%2Fexample.com%2Fblog%2Fwp-admin%2F&reauth=1 -> とすると、404 にリダイレクトされます。

どうもありがとう。

アップデート2: WP_SITEURLをexample.comに、WP_HOMEをexample.com/blogに変更してみました。また、mysql wp-optionsテーブル内のこれら2つのレコードも変更しました。しかし、/blog/wp-adminにアクセスしようとすると、http://example.com/blog/wp-admin/example.com/blog/wp-login.php?redirect_to=http%3A%2F%2Fexample.com%2Fblog%2Fwp-admin%2F&reauth=1-> 404

答え1

きっと必要だ

root /var/www/html/wordpress/public_html/blog;

ブロック内location /blog {}

さらに、ブロックはlocation ~ \.php$以下のようになります。

location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}

また、try_filesディレクティブを次のように変更する必要があります。 try_files $uri $uri/ /blog/index.php?$args;

関連情報