bitnami wordpress でサブディレクトリタイプのマルチサイトを構築するとき

# AWSでbitnamiのwordpress イメージを使って構築するプラン

### マルチサイトには２種類ある
Wordpressのマルチサイトにはサブドメイン方式と、サブディレクトリ方式の２つがある。
日本語サイトと英語サイトをひとつのwordpressで管理するようにした場合に以下のような違いになる。

##### サブドメイン方式では
Webサイトへのアクセスが
https://example.com と https://eng.example.com  のようになるのに対して

##### サブディレクトリ方式だと
https://example.com と https://example.com/eng のような感じになる。

メリット、デメリットについてはよくわからないが、最近ではサブドメイン方式でもサブディレクトリ方式でもSEO的にはあまり変わらないようで、どちらかというと、体面的なことで、企業や商品のランディングページで日本語版と英語版を設置するならサブディレクトリ、ひとつの企業の中の事業単位でサイトを建てるならサブドメイン方式とかなのかなぁと思うくらい...


### AMIの選択
インスタンスを作成するときにAWSマーケットプレイスで wordpress bitnami で検索すると、現時点(2022/11) で4つほど該当するAMIが表示される。

マルチサイトのwordpressを建てたいときはMultisite用のものを最初から使う。
シングルサイトのものを使って建てたWordpressを後からマルチサイトに変更してみたのだが、私にはうまく構築することができなかった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227125/68b12a0f-8e15-bfec-6b5c-3b22f5d765e0.png)

★３つというのは、ちょっとうなづけるところがある。
というのは、普通のシングルサイト用のbitnamiのWordpressは本当に簡単で起動までほぼ何もすることが無いのだが、マルチサイトの場合起動までにひと手間かかるのと、マルチサイトのwordpressの管理の方法が直感的には把握しづらいところがあるからではないかと思う。まあ、そこはbitnamiが悪いわけではないのだが...


### Bitnami Multisite のAMIを使ってもそのままではマルチサイトにならない
以下のURLにbitnamiのマルチサイトでの設定方法が書かれている。
https://docs.bitnami.com/installer/apps/wordpress-multisite/administration/use-directories/
アプローチ方法にAとBがあるのだが、どちらを選ぶかはAWSのAMI埜ようなシステパッケージを使用している場合はA、そうでない場合はBということになるようだ。

テスト方法としては 下記のコマンドでわかるようだ
```
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
```
実際に実行してみると以下の様な感じになる。この場合は、アプローチAの方法で行けということ。
>bitnami$ test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
Approach A: Using system packages.

後からこれを読んだときにはBitnamiやWordpressのアップデートが行われている可能性があるので、実際の対応方法はURLから確認するべきだが、今回の対応とてしては、以下のファイルの変更と、apacheの再起動だった。  



`installdir/wordpress/wp-config.php` から下記の部分を変更
define( 'SUBDOMAIN_INSTALL', true ); ⇒ define('SUBDOMAIN_INSTALL', false);

installdir は、 bitnami インストールフォルダでAWSのAMIの場合は、 `/opt/bitnami` だった。

installdir/apache2/conf/vhosts/wordpress-vhost.conf 
のファイルの下記の部分を
```
  # BEGIN WordPress Multisite
  # Using subdomain network type: https://wordpress.org/support/article/htaccess/#multisite
  RewriteEngine On
  RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  # add a trailing slash to /wp-admin
  RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
  RewriteCond %{REQUEST_FILENAME} -f [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^ - [L]
  RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
  RewriteRule ^(.*\.php)$ $1 [L]
  RewriteRule . index.php [L]
  # END WordPress Multisite
```
下記の内容で置換
```
  # BEGIN WordPress Multisite
  # Using subfolder network type: https://wordpress.org/support/article/htaccess/#multisite
  RewriteEngine On
  RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  # add a trailing slash to /wp-admin
  RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
  RewriteCond %{REQUEST_FILENAME} -f [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^ - [L]
  RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
  RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
  RewriteRule . index.php [L]
  # END WordPress Multisite
```
installdir/apache2/conf/vhosts/wordpress-https-vhost.conf についても上記と同様の変更を行う。

最後にapacheの再起動
`sudo installdir/ctlscript.sh restart apache`

これであっさりとマルチサイトのWordpressになった。