.htaccessサンプル:色々なリダイレクト

.htaccess を使ったリダイレクトを行うサンプルをご紹介します。ファイル単位でリダイレクトする方法、ディレクトリ単位でリダイレクトする方法、そしてドメイン単位でリダイレクトする方法についてそれぞれ解説します。

(Last modified: )

ファイル単位でリダイレクトする

最初にファイル単位でリダイレクトを行う場合です。 .htaccess があるディレクトリと同じディレクトリにある old.html へのアクセスがあった場合に、新しい URL へリダイレクトする場合は次のように記述します。

RewriteEngine on
RewriteRule ^old.html$ http://www.example.com/new.html [L,R=301] 

同じサイトにある /other/new.html へリダイレクトする場合は次のように記述します。

RewriteEngine on
RewriteRule ^old.html$ /other/new.html [L,R=301] 
サンプルコード

それでは実際に試してみます。 www.example.jp のドキュメントルートに設置した .htaccess の中で次のように記述しました。 blog ディレクトリの中にある hello.html へのアクセスを、別の www.example.com 内の myblog ディレクトリの中にある hey.html へリダイレクトします。

RewriteEngine on
RewriteRule ^blog/hello.html$ http://www.example.com/myblog/hey.html [L,R=301]

ブラウザから http://www.example.jp/blog/hello.html へアクセスします。

ファイル単位でリダイレクトする(1)

http://www.example.com/myblog/hey.html へリダイレクトされました。

ファイル単位でリダイレクトする(2)

ディレクトリ単位でリダイレクトする

次にディレクトリ単位でリダイレクトする場合です。指定したディレクトリに含まれるすべてのファイルへのアクセスを、新しいサイトの中の指定したディレクトリへ同じファイル名でリダイレクトします。 .htaccess があるディレクトリの中にある olddir ディレクトリへのアクセスがあった場合に、新しい URL の newdir ディレクトリへリダイレクトする場合は次のように記述します。

RewriteEngine on
RewriteRule ^olddir/(.*)$ http://www.example.com/newdir/$1 [L,R=301] 

同じサイトにある /other/newdir へリダイレクトする場合は次のように記述します。

RewriteEngine on
RewriteRule ^olddir/(.*)$ /other/newdir/$1 [L,R=301] 
サンプルコード

それでは実際に試してみます。 www.example.jp のドキュメントルートに設置した .htaccess の中で次のように記述しました。 blog ディレクトリへのアクセスを、別の www.example.com 内の myblog ディレクトリにある同じファイル名へリダイレクトします。

RewriteEngine on
RewriteRule ^blog/(.*)$ http://www.example.com/myblog/$1 [L,R=301] 

ブラウザから http://www.example.jp/blog/hey.html へアクセスします。

ディレクトリ単位でリダイレクトする(1)

http://www.example.com/myblog/hey.html へリダイレクトされました。

ディレクトリ単位でリダイレクトする(2)

ディレクトリへアクセスした場合も同じようにリダイレクトされます。ブラウザから http://www.example.jp/blog/ へアクセスします。

ディレクトリ単位でリダイレクトする(3)

http://www.example.com/myblog/ へリダイレクトされました。

ディレクトリ単位でリダイレクトする(4)

ドメイン単位でリダイレクトする

次にディレクトリ単位でリダイレクトする場合です。ドメインに含まれるすべてのファイルへのアクセスを、新しいサイトへ同じファイル名でリダイレクトします。 .htaccess はドキュメントルートに配置してください。 www.example.jp へのアクセスをすべて www.example.com へリダイレクトする場合は次のように記述します。

RewriteEngine on
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
サンプルコード

それでは実際に試してみます。 www.example.jp のドキュメントルートに設置した .htaccess の中で、次のように記述しました。 www.example.jp 内のすべてのファイルへのアクセスを、別の www.example.com 内の同じディレクトリとファイル名へリダイレクトします。

RewriteEngine on
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

ブラウザから http://www.example.jp/blog/hey.html へアクセスします。

ドメイン単位でリダイレクトする(1)

http://www.example.com/blog/hey.html へリダイレクトされました。

ドメイン単位でリダイレクトする(2)

-- --

.htaccess を使ったリダイレクトを行うサンプルを紹介しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。