[.htaccess]遷移元をフルパスで指定した上でリダイレクトを仕込む

普通は省略されちゃうからね。

どういうことか

レンタルサーバーでWEBサイトを作ると、「契約時に付与されるドメイン」「独自ドメイン」の2つが適用される。どっちにアクセスしても閲覧先は同じなので、同じページが表示される。
これは当たり前。

WEBサイト作成中に、先行して仮ページを表示したいという場合。
独自ドメインにアクセスさせたら仮ページを表示させるんだけど、本番サイトが完成したらそっちに差し替えたい。

ということで、普通だったらこんな感じでリダイレクトを仕込む。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^.*$ https://mydomain.com/maintenance.html [R=302,L]
</IfModule>

普通だったら、というのは、「遷移元は省略して遷移先はフルパス」という記述のこと。

並行して本番サイトを同サーバーで作ってるから、仮ページを表示させている間も閲覧できるようにしたい。
だから「レンタル時に付与されたドメインで本番サイトを閲覧」「独自ドメインは仮サイトを表示させて公開」で使い分けをしたいのだけど、上記のように遷移元を省略した書き方にすると付与ドメインにも適用されちゃって都合が悪い

リダイレクト対象は独自ドメインだけにして、付与ドメインは除外したい。

つまり、遷移元を明確に記述した上でリダイレクトを仕込みたい

こんな感じ

<IfModule mod_rewrite.c>
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
    RewriteCond %{REQUEST_URI} ^/$
    RewriteRule ^$ /examplepage.html [R=302,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On

# 独自ドメインでアクセスされたとき
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]

# 特定ページ(例:/maintenance.html)以外のすべてのパスに適用
RewriteCond %{REQUEST_URI} !^/maintenance\.html$

# リダイレクト実行
RewriteRule ^.*$ /maintenance.html [R=302,L]
</IfModule>

chatGPTに聞いたら色んなパターンを出してくれた。
解説もしてくれるし本当に便利ですね。

コメント

タイトルとURLをコピーしました