【WordPress】特定ページ以外のアクセスを別ドメインのサイトにリダイレクトさせる

電脳備忘録

information(固定ページ)以外のアクセスをすべて「https://www.example.com/archive/」にリダイレクトするための.htaccessの設定。

とりあえず.htaccessファイルに除外設定とリダイレクトの処理を最終行に記述したが、まったっくもってリダイレクトすることはなかった。そこでRewriteBaseの下に記述してみたが、今度は問答無用でリダイレクトしてしまった(除外処理が無視される)。

ドハマりしてはいたが冷静さは失わなかった。下記のエントリーに「1つが一致したときにルールの読み取りを停止するには、[L]フラグを追加する必要があります。」という記述を見つけた。

複数の書き換えルールを使用していますか?

なるほど、リダイレクトの処理に行く前に読み取りを停止してしまっているから、リダイレクトの処理が実装されないのだなと思い「L」を削除した。

変更前

RewriteRule . /index.php [L]

変更後

RewriteRule . /index.php

最終的に以下の書き方で意図した動きをするようになった。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
#除外設定
RewriteCond %{REQUEST_URI} !(^/information)
#リダイレクト
RewriteRule ^(.*)$ https://www.example.com/archive/ [R=301,L]
</IfModule>
# END WordPress

優先順位とかそういうのを知らなくてここにたどり着くまでに2時間かかってしまった・・・。しかしオーダー通り実装することができたので良しとする。

Newer
Older
Dark
Light
menu