WordPressのURLをサブドメインからメインドメインに変更する方法
サブドメインの方がいいと思ってサブドメインにWPをインストールして進めていたけど、
「あ、やっぱりメインドメイン表示にしたい!」
ってなること、ありますよね笑
私もそんな経験をしたので、その時にメインドメインに変更した手順を書いていこうと思います^^
『一般』の変更
WPのダッシュボードにある『設定』→『一般』の
『サイトアドレス(URL)』がサブドメインになっていると思うので、
メインドメインに変更する。
※『WordPressアドレス(URL)』の方にもサブドメインが記述されていると思いますが、そちらは変更しないでくださいね。
FTPソフトを使ってindex.phpを編集
FTPソフトでWPをインストールしているサブディレクトリの階層までいき、
その階層にあるindex.phpファイルをPCのデスクトップかどこかにダウンロードする。
ダウンロードしたファイルをテキストエディタで開き、
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
という記述があると思うので、それを
require( dirname( __FILE__ ) . '/サブディレクトリ名/wp-blog-header.php' );
に変更し、保存する。
保存したら、FTPソフトでメインディレクトリの階層までいき、編集したファイルをアップロードをします。
たとえば、https://exam.comというドメインだったとしたら、
今の状態だとサブディレクトリにWPを入れていると思うので、
https://sub.exam.comとかみたいなURLになっていると思います。
なので、メインディレクトリの階層というのは、/exam.com/public_htmlの中に今のファイルを入れます!
メインディレクトリ内にある.htaccessを編集
メインディレクトリの階層の中に.htaccessというファイルがあれば、
それをPCのデスクトップかどこかにダウンロードする。
※もしメインディレクトリの.htaccessファイルがなければ、サブディレクトリの階層のなかにある.htaccessファイルをダウンロードしてください。
ダウンロードしたファイルをまたテキストエディタで開き、以下の以下のコードを追加します。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /サブディレクトリ名/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /サブディレクトリ名/index.php [L] </IfModule> # END WordPress
編集したら保存し、メインディレクトリ内に戻します(上書き)。
301リダイレクト処理をする
次は、サブディレクトリの階層内にある.htaccessファイルを編集するので、ダウンロードします。
そして、以下の301リダイレクト処理を記述します。
もともとファイル内に#BEGIN WordPressという記述があると思うので、それより上に記述します。
RewriteEngine On RewriteCond %{http_host} ^サブディレクトリ名.メインドメイン名.com RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php RewriteCond %{REQUEST_URI} !^(.*)?wp-admin RewriteCond %{REQUEST_URI} !\.css$ RewriteCond %{REQUEST_URI} !\.js$ RewriteCond %{REQUEST_URI} !\.jpg$ RewriteCond %{REQUEST_URI} !\.gif$ RewriteCond %{REQUEST_URI} !\.png$ RewriteRule ^(.*) https://メインドメイン名.com/$1 [R=301,L]
『サブディレクトリ名.メインドメイン名.com』のところは、https://sub.exam.comというサブドメインだったら、
『sub.exam.com』を入れます。
『https://メインドメイン名.com』のところは、今から変更したいドメインを入れます。
RewriteCond %{REQUEST_URI} !〜の記述は、逆にリダイレクトさせたくないものを入れています。
WPの管理画面とかは、リダイレクトしてしまったら入れなくなってしまうので、
RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php RewriteCond %{REQUEST_URI} !^(.*)?wp-admin
というように書いて、リダイレクトさせないようにしています。
編集できたら、サブディレクトリの階層にファイルを戻します(上書き)。