ドメイン名(FQDN)から配下のページにリダイレクトする.htaccessの書き方
はじめに
http://hoge.com
にアクセスされた時に
http://hoge.com/fuga/index.html
にリダイレクトさせる.htaccessの書き方を紹介します。
コード&解説
.htaccess
はルートディレクトリに配置し、最終的な記述はこうなります↓
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^$ http://hoge.com/huga/index.html [R=301,L]
</IfModule>
一行ずつ解説していきます。
<IfModule mod_rewrite.c>
mod_rewriteはApacheサーバでURLの書き換えを行うモジュールです。
mod_rewriteが使えない環境ではmod_rewriteのコードが実行されるとエラーが発生します。
<IfModule mod_rewrite.c>
,</IfModule>
はmod_rewriteが使える環境でのみタグの中に記述されたコードを実行します。
RewriteEngine on
mod_rewriteの機能を有効化します。off
とすれば無効化されます。
RewriteBase /
Rewrite処理のベースとなるディレクトリを指定します。
RewriteBase /
とした場合、.htaccess
が配置されているディレクトリが指定されていることになります。
(.htaccess
の有効範囲についてはこのサイトが参考になりました)
また、この記述がない場合は、htaccessを設置しているディレクトリが自動的に選択されますが、これはRewriteRuleを相対パスで記述した場合にのみ適用されるそうです。
なので特に理由がなければRewriteBase
を指定した方がいいかと思います。
RewriteRule ^$ http://hoge.com/huga/index.html [R=301,L]
基本の書き方
RewriteRule A B [C]
AにアクセスされたらBにリダイレクトする[恒久的か一時的か指定]
という風に書きます。
Aの部分
転送元を指定します。
RewriteBase
で指定したディレクトリ以下を記述することに注意です。
今回の^$
はどちらも正規表現で
- ^
:文字列の始まりの意味
- $
:文字列の終わりの意味
になります。
.htaccess
がルートディレクトリに配置しRewriteBase /
としているので、「hoge.comにアクセスされたら」という意味になります。
Bの部分
リダイレクト先のURLを書きます。
転送元の記述と違って、URLの先頭から記述します。
Cの部分
301リダイレクトか、302リダイレクトか指定します。
302リダイレクトにしたい場合は[R=302,L]
とします。
まとめ
.htaccess
について調べるとRewirteRule
について書かれている記事がたくさん出てきますが、うまくいかない理由として.htaccessを置く場所、RewriteBase
の記述もある気がしました。
誰かの参考になれたら嬉しいです。
参考サイト
.htaccessを使ったよく使うリダイレクトまとめ
.htaccessを用いたURL書き換えをマスターする・前編
今さら人に聞けない!WordPressで使われているmod_rewriteの説明書
Author And Source
この問題について(ドメイン名(FQDN)から配下のページにリダイレクトする.htaccessの書き方), 我々は、より多くの情報をここで見つけました https://qiita.com/ruri14/items/bd2df9e2610e6db26b24著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .