WordPress の 表示と管理のドメインを分ける!完全に^^

WordPress

表示するサイトは https://grtlab.com/ としましょう.

管理画面は https://admin.example.com/ とします。

とにかく管理ドメインにアクセスさせない!ということで。

正規のやり方は home , siteurlを分けるなどですが、クロスドメインや完全に adminのほうにはアクセスさせないためには?
adminのほうにはIP制限や認証を入れたい場合は。ということで

ずばり、get_optionを強制的に変えてみる.

当然、非推奨ですが・・・うまくできないので・・・とりあえず・・・

wp-includes/option.php の function get_optionの最後のreturnの前に

if ($option === 'siteurl' || $option === 'home') {
        // echo $option;
        $value = 'https://' . $_SERVER['HTTP_HOST'];
}

と この場合はアクセスしたドメインを全てに反映しています!
ディレクトリ使う場合もハードコーディングで・・・

nginx 認証を入れる

とりあえずbasic認証で

$ htpasswd -c -b ./.htpasswd {user} {pass}

configに php-fpmへ渡すところへ auth_basic を追加します。ページはすべて403に。

#php-fpm
location ~ \.php$ {
      try_files $uri =404;

      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      include fastcgi_params;
      fastcgi_index index_wp.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_pass grtlab;

      auth_basic "grtlab";
      auth_basic_user_file /home/grtlab/app/conf/httpd/basic/.wpbasic.htpasswd;

}

みたいな感じで再起動して admin~にアクセスすると

こんな感じでアクセスできなくなります。

  • 管理側でアクセスしてしまうと管理側ドメインで cache ができてしまう(画像などのURLが管理ドメイン)ので、それを防ぐことも必要ですね

nginx の conf に画像などはドメイン転送するように設定しました。

  location ~* \.(css|png|jpg|jpeg|gif|ico)$ {
    rewrite ^/(.*) https://grtlab.com/$1 permanent;
  }

コメント

タイトルとURLをコピーしました