表示するサイトは 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; }
コメント