ホーム > ネット > .htaccess 使い方 ページ URL 変更 URL変更 リダイレクト
目次 | 元のページ 前のページ | 次のページ サイトマップ | ページEND

.htaccess 使い方 ページ URL 変更 URL変更 リダイレクト


.htaccess 使い方 ページ URL 変更 URL変更 リダイレクト



「.htaccess」ファイルに、URLのリダイレクト設定を記述しておくと、旧URLでアクセスしてきた閲覧者を、自動的に新URLページに誘導できます

サイトを変更した場合、あるいは、同一サイト内でディレクトリ名を変更した場合、ページURLを変更した場合等、それぞれの変更に対応でき、サイト、ディレクトリ、ページのお引越し等の際、自動的に引越し先へ閲覧者を誘導することができます



Redirect と Rewrite の違い 使い分け



「.htaccess」ファイルに、リダイレクト設定を記述する場合、「Redirect」 と 「Rewrite」 指定の 2種類の書き方があります

「Rewrite」 指定は、サーバー上の 「mod_rewrite」 の機能を使用してリダイレクトを行いますので、大抵のレンタル(Web)サーバーであれば 「mod_rewrite」 機能はインストールされていますので問題なく使えますが、インストールされていない(Web)サーバーでは使用できません


正常に機能しないようであれば、レンタルサーバーサービスサイトの「よくある質問」等で確認してみる必要がありますが、「Rewrite」 指定では、「Redirect」 では指定できないような細かな設定ができます

例えば

ブラウザの種類、リファラ、アクセス日時など、リダイレクトするときの条件を指定できます
(キャンペーン時期だけいつもと違うトップページを見せる、ブラウザによって違うページを見せる等)

柔軟なアクセス制限ができます
(特定IPからのアクセス禁止、他サイトからの直リンク禁止、自社IPのみ管理画面へのアクセスを許可等)

リダイレクト先の指定にも正規表現が使えますので、テスト用サーバーから本番用サーバーに移行時等、リダイレクト先のドメイン名が変わっても書き換えを不要にできます

複数ページを統合して、同一ページにアクセスさせたい場合 、「.html」から「.php」などへの変更 、リニューアルによるページ構成の変更の場合等でも活用できます


使い分け方としては


「Redirect」 で記述できる場合は、先々「Rewrite」 指定の使えないサーバーに移転する際の修正リスクを避けるため 「Redirect」 を使用する

「Redirect」 で記述できない場合は、「Rewrite」 で記述する といったところでしょうか




特定のページURLから 別のページURLへの リダイレクト (ページURLの変更)



「.htaccess」 ファイルに、下記の記述を入れておきますと、ページのURLを変更した際等、旧ページ(特定のページURL)にアクセスされた際、自動的に新しいページURLに転送します

新ページは、旧ページと同一サイト内であっても、別サイトでも可能で、「.htaccess」 ファイルは、旧ページのあるサイトのルートディレクトリに設置します

(変更URL(ページ)がたくさんある場合、Excel を使用して編集 ・ 作成すると便利です
Windows のコマンドプロンプトにて 「dir /B > c:\tmp\dir.txt」と打鍵すると、そのフォルダ内のファイル名一覧を取得できます)



特定のページURLから 別のページURLへの リダイレクト (Redirect 使用)



旧ページにアクセスがあった際、新ページにリダイレクト(転送)します


記述場所 .htaccess
構文 Redirect permanent /旧ディレクトリ名/旧ページ名 https://新ドメイン名/新ディレクトリ名/新ページ名
記述例 Redirect permanent /D1/P1.html https://abhp.net/D2/P2.html
説明 Redirect permanent /旧ディレクトリ名/旧ページ名 https://新ドメイン名/新ディレクトリ名/新ページ名
旧ページにアクセスがあった際、新ページにリダイレクト(転送)します
(改行コード)
最終行は必ず改行し、改行コードのみの空行とします



特定のページURLから 別のページURLへの リダイレクト (Rewrite 使用)



旧ページ名にアクセスがあった際、そのURLを https://新ドメイン名/新ディレクトリ名/新ページ名に書き変えることにより、新ページにリダイレクト(転送)します


記述場所 .htaccess
構文 RewriteEngine on
RewriteBase /
RewriteRule ^旧ページ名$ https://新ドメイン名/新ディレクトリ名/新ページ名 [R=301,L]
記述例 RewriteEngine on
RewriteBase /
RewriteRule ^OldP1.html$ https://abhp.net/NewD1/NewP1.html [R=301,L]
説明 RewriteEngine on
Rewrite機能をON(URLの書き換えを可能)にします
RewriteBase /
URLの書き換えのベースをルートディレクトリ(/)とします
RewriteRule ^旧ページ名$ https://新ドメイン名/新ディレクトリ名/新ページ名 [R=301,L]
URLの書き換え内容を指定します
旧ページ名にアクセスがあった際、そのURLをhttps://新ドメイン名/新ディレクトリ名/新ページ名に書き変えます
(改行コード)
最終行は必ず改行し、改行コードのみの空行とします




複数ページをまとめて 特定のページURLへ リダイレクト (Rewrite 使用)



類似する複数の旧ページ名にアクセスがあった際、そのURLを https://新ドメイン名/新ディレクトリ名/新ページ名に書き変えることにより、特定の新ページにリダイレクト(転送)します


記述場所 .htaccess
構文 RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} 共通文字列(.*)\.html
RewriteRule ^(.*)$ https://転送先URL [R=301,L]
記述例 RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} Doc_(.*)\.html
RewriteRule ^(.*)$ https://転送先URL [R=301,L]
説明 RewriteEngine on
Rewrite機能をON(URLの書き換えを可能)にします
RewriteBase /
URLの書き換えのベースをルートディレクトリ(/)とします
RewriteCond %{REQUEST_URI} 共通文字列(.*)\.html
ファイル名の先頭が「共通文字列」で始まるページ(htmlファイル)にアクセスがあった場合、続く 「RewriteRule」 文の命令を実行します
RewriteRule ^(.*)$ https://転送先URL [R=301,L]
URLの書き換え内容を指定します
前文の 「RewriteCond」 条件に一致するアクセスがあった場合、そのURLをhttps://新ドメイン名/新ディレクトリ名/新ページ名に書き変えます
(改行コード)
最終行は必ず改行し、改行コードのみの空行とします




複数ページをまとめて それぞれに対応するページURLへ リダイレクト (Rewrite 使用)



ページ名(ファイル名)を変更した際、変更ページ名に規則性がある場合、その規則に合致する複数の旧ページ名へのアクセスを、その規則に沿って URL を書き変えて、新しいページにリダイレクト(転送)させることができます


記述場所 .htaccess
構文 RewriteRule 条件パターン 置換文字列 [フラグ]
記述例 RewriteEngine on
RewriteRule dic/Dic_(.*) https://abhp.net/alacarte/Alacarte_$1 [R=301,L]
説明 RewriteEngine on
Rewrite機能をON(URLの書き換えを可能)にします
RewriteRule dic/Dic_(.*) https://abhp.net/alacarte/Alacarte_$1 [R=301,L]
ブラウザからアクセスされた URL文字列の中の、ディレクトリ名 「dic」 で、ファイル名の先頭に 「Dic_」 の付いている URL文字列を、ディレクトリ名 「alacarte」 で、ファイル名の先頭に 「Alacarte_」 の付いている URL文字列に書き変えます

(.*)は、()で囲うことによって文字列のグルーピング化、後方参照可能な変数として扱うことができるようにする指定で、中身は、任意の文字列 (.) が、いくつあってもよい (*) という意味になり、「Dic_」 の後ろに続く文字列を変数 ($1) として扱うことができます

RewriteRule 文中、複数の()がある場合、先頭から順に、$1、$2、$3 ・・・ として、参照できます
RewriteCond 文中の()変数を扱いたい場合は、%1、%2、%3 ・・・ で参照します

[R=301] は、ステータスコードを恒久的に転送するという意味の 301 (恒久的な移動)に設定します

[L] は、Rewrite機能によるURL変換を終了します (後のルールが適用されなくなります)
(改行コード)
最終行は必ず改行し、改行コードのみの空行とします




「http」 と 「https」 それぞれ切り分けて リダイレクト (Rewrite 使用)



「http」 と 「https」 ともに使用しているサイトの場合、「http」 アクセスと 「https」 アクセス、それぞれを切り分けて、新ページにリダイレクトします


記述場所 .htaccess
構文 RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteRule ^旧ディレクトリ名/旧ページ名 https://新ドメイン名/新ディレクトリ名/新ページ名 [R=301,L]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^旧ディレクトリ名/旧ページ名 https://新ドメイン名/新ディレクトリ名/新ページ名 [R=301,L]
記述例 RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteCond %{SERVER_PORT} 80
RewriteRule ^D1/P1.html https://abhp.net/D2/P2.html [R=301,L]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^D1/P1.html https://abhp.net/D2/P2.html [R=301,L]
説明 RewriteEngine on
Rewrite機能をON(URLの書き換えを可能)にします
RewriteBase /
URLの書き換えのベースをルートディレクトリ(/)とします
RewriteCond %{SERVER_PORT} 80
条件指定 : ポート番号 「80」 (http) アクセス時のみリダイレクトする
RewriteRule ^旧ディレクトリ名/旧ページ名 https://新ドメイン名/新ディレクトリ名/新ページ名 [R=301,L]
URLの書き換え内容を指定します
旧ディレクトリ名/旧ページ名へのアクセス時、新ドメイン名/新ディレクトリ名の新ページ名(.htmlファイル等)に、「http」転送します
RewriteCond %{SERVER_PORT} 443
条件指定 : ポート番号 「443」 (https) アクセス時のみリダイレクトする
RewriteRule ^旧ディレクトリ名/旧ページ名 https://新ドメイン名/新ディレクトリ名/新ページ名 [R=301,L]
URLの書き換え内容を指定します
旧ディレクトリ名/旧ページ名へのアクセス時、新ドメイン名/新ディレクトリ名の新ページ名(.htmlファイル等)に、「https」転送します
(改行コード)
最終行は必ず改行し、改行コードのみの空行とします





301 リダイレクト (恒久的な移動) と 302 リダイレクト (一時的な移動)



記述場所
.htaccess
記述内容
恒久的に移転する場合 (301リダイレクト) 301リダイレクトは、恒久的に移動するという意味で、ドメインを変更したり、ページのアドレスを変更した場合等で固定的に変更する場合に使用します
Redirect permanent 「転送元」 「転送先」
一時的に移転する場合 (302リダイレクト) 302リダイレクトは、一時的に移動するという意味で、期間限定のイベントやキャンペーンなどで一時的にリダイレクトしたい時等に使用します
Redirect temp 「転送元」 「転送先」

どちらを使用しても、アクセスされた瞬間に自動転送され、転送元のURLがブラウザの履歴に残らない点も同じで、両者の違いは、(ブラウザなどに)通知される転送理由(HTTPステータスコード)が、前者では「恒久的な移動」(301リダイレクト)で、後者では「一時的な移動」(302リダイレクト)だという点のみです

ブラウザの動作はどちらも同じですが、検索サイトのデータベースへの登録には影響する可能性があり、「ずっと移転する」(=転送先URLを登録して欲しい)なら前者を、「今だけ移転する」(=転送元URLを登録して欲しい)なら後者を使います



※. <meta>タグを利用して、各ファイル内にリダイレクト設定を記述する方法につきましては、「 HTML ファイル名( URL )変更のやり方 新しい URL に自動転送 」 をご参照下さい (別タブ(ウィンドウ)が開きます)




.htaccess で 良く使われる フラグ オプション パラメータ 意味


フラグ 意味
[NC] 大文字小文字を区別しない
[R=301,L] R=301 レスポンスコードを 301 (恒久的な移転) に変更
L 直後に続くルールを実行しない
RewriteCond に続けて RewriteRule を複数記述するような場合、最終文につける

目次 | 元のページ 前のページ | 次のページ サイトマップ | ページTOP
ホーム > ネット > .htaccess 使い方 ページ URL 変更 URL変更 リダイレクト
   

© 2014 abhp.net All Rights Reserved.

参考情報


.htaccessによるリダイレクト徹底解説 | Cherry Pie Web
htaccess-リダイレクト(サイトの引越し)
.htaccessを使った301リダイレクト記述方法 SEO対策 LYKAONエンジニアブログ
.htaccessを使ったよく使うリダイレクトまとめ | Kana-Lier カナリエ

ページTOP
ページTOP
ページTOP
ページTOP