2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ドメイン名(FQDN)から配下のページにリダイレクトする.htaccessの書き方

Last updated at Posted at 2020-12-17

はじめに

http://hoge.comにアクセスされた時に
http://hoge.com/fuga/index.htmlにリダイレクトさせる.htaccessの書き方を紹介します。

コード&解説

.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の説明書

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?