概要
wordpressで作った下記アドレスのサイトをvagrantで右のURLとして表示しようとしたら手間取った。
http://aaaa.example.com → http://192.168.33.10/aaaa
どっちも元サーバーでは同じディレクトリに下記のような形でWordPressが入っていたのでそのままコピーしても動くだろたぶん!と思っていた
/home/aaaa/wp
/home/bbbb/wp
しかしコピーして、DB書き換えて、mod_rewrite等の設定をしてデータベースを置換しても「The requested URL /index.php was not found on this server.」として動かなかったのでその対応記録。
どうやらWordPressまでのパスがドメインに対して /wp だったのに対し、
仮想環境移動後は /aaaa/wpになっているので、/aaaa/ 内の.htaccessを合わせて書き換える必要があったようだ。
環境
CentOS Linux release 7.6.1810 (Core)
mysql Ver 14.14 Distrib 5.6.43, for Linux (x86_64) using EditLine wrapper
Server version: Apache/2.4.6 (CentOS)
PHP 7.1.26 (cli) (built: Jan 9 2019 08:02:33) ( NTS )
やったこと
まずやりたいことを確認
データベース
Aサイト元アドレス:http://aaaa.example.com
vagrantでのドキュメントルート → /var/www/html/aaaa/wp
vagrantでアクセスしたいURL → http://192.168.33.10/aaaa
Bサイト元アドレス:https://bbbb.example.com
vagrantでのドキュメントルート → /var/www/html/bbbb/wp
vagrantでアクセスしたいURL → http://192.168.33.10/bbbb
とりあえずドメインをIPに置換
データベース内のドメインを置換する。
置換には「Search Replace DB」を使った(英語)
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
使い方はこの記事の一番下あたりを参照
左のアドレスを右のように置換
http://aaaa.example.com → http://192.168.33.10/aaaa
aaaa.example.com → 192.168.33.10/aaaa
Bサイトの方、SSLが入っているので全部置換できるようにする
https://bbbb.example.com → http://192.168.33.10/bbbb
http://bbbb.example.com → http://192.168.33.10/bbbb
bbbb.example.com → 192.168.33.10/bbbb
mod_rewriteなどを有効化
(いつもfindで探すけど良くないと思う)
たぶん /etc/httpd/conf/httpd.conf の方だろうとあたりを付けて編集
# find / -name 'httpd.conf' /etc/httpd/conf/httpd.conf /usr/lib/tmpfiles.d/httpd.conf # vi /etc/httpd/conf/httpd.conf
httpd.confの中身の書き換え
#Options Indexes FollowSymLinks #コメント化して削除 Options -Indexes #追加
index.phpを追加
<ifmodule dir_module=""> DirectoryIndex index.html index.php #index.phpを追加 </ifmodule>
この記事を参考にAllowOverride NoneをALLにして回る
4箇所ぐらいある(本当はドキュメントルートのパスのところだけ変更すればいいらしい)
#AllowOverride None #コメント化して削除 AllowOverride All #追加
各サイトのルートディレクトリの.htaccessの変更
【Aサイト】
/var/www/html/aaaa/wp
・wordpressのインストールティレクトリをこことする
・ここの.htaccessはそのまま
/var/www/html/aaaa
・このディレクトリの.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
こうする
# BEGIN WordPress <ifmodule mod_rewrite.c=""> RewriteEngine On RewriteBase /aaaa #aaaaを増やす RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /aaaa/index.php [L] #aaaaを増やす </ifmodule> # END WordPress
【Bサイト】
/var/www/html/bbbb/wp
・wordpressのインストールティレクトリをこことする
・ここの.htaccessはそのまま
/var/www/html/bbbb
・このディレクトリの.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
こうする
# BEGIN WordPress <ifmodule mod_rewrite.c=""> RewriteEngine On RewriteBase /bbbb #bbbbを増やす RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /bbbb/index.php [L] #bbbbを増やす </ifmodule> # END WordPress
これでアクセスしたら正常に表示された。よかった…。
途中でなぜかDBにアクセスできなくなり
「ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)」
と出ましたが下記を行ったらなんとかなりました。
https://qiita.com/ma_me/items/ae449ad8a2c424665310
おわり。