htaccess

リダイレクト 「.htaccess」の記述   new


リダイレクト

ブログのお引越しなどでURLが変わった時に、元のURLから新しいURLへ自動転送させることをリダイレクトと言います。リダイレクトしておくと、URLが変わったとしても、目的を持って訪れた訪問者が目的のページに辿り着けます。

次の2通りのリダイレクトの仕方について記載します。

301リダイレクト

URLが恒久的に変更された場合に用いる

302リダイレクト

一時的に転送する場合に用いる

SEOの観点から301リダイレクトの設置について

転送前の検索エンジンからの評価を転送後も引き継ぎます。また、同じ内容のページへのURL、「www」のついているURLと付いていないURLを1つにまとめることで、評価を上げることを期待できます。

  •  「www.example.com」と「example.com」をどちらか1つにする

Google検索の場合はサーバサイドで301リダイレクトの使用を奨めている。ヤフーについては0秒リダイレクトがSEO的に有利と言える。

リダイレクトの例

  • example.com → 〇〇〇.com
  • example.com/✖✖✖/hoge.html → example.com/○○○/hoge.html
  • example.com/hoge/✖✖✖.html → example.com/hoge/○○○.html

ドメインの変更、ディレクトリの変更、ファイルの変更、すべてにリダイレクトを行えます。

リダイレクトの方法

  • .htaccessファイルを編集する
  • httpヘッダによるリダイレクト
  • metaタグによるリダイレクト
  • プラグインを利用する

「httpヘッダによるリダイレクト」「metaタグによるリダイレクト」は302リダイレクトや、移転のお知らせなどの文章を表示し、数秒後に転送させることができます。

.htaccess でリダイレクトを記述する

.htaccessファイルを設置することで、アスセスに関する機能を追加できます。主にできる事は次の点です。

  • 特定のページやディレクトリにIDとパスワードの入力を求め、アスセスを制限する
  • 特定のファイルへのアクセスを拒否する
  • 「404 Not Found」などのエラーメッセージを変更できる
  • 指定のURLへ自動転送させる

.htaccessファイルを利用するためには、サーバー内で「Apache」とういソフトウエアが利用されている必要があります。

.htaccessファイルの作成で注意する点・エラーの時の確認すること

  • ファイル名の最初に「ドット」を忘れないように
  • 最後に改行を入れる(テキストファイルは改行で終わることを約束されています)
  • テキストエディタで作成する
  • 全角スペースなど入れない
  • .htaccessファイルのパーミッションは「604」「644」

もしワードなど書式情報を含むソフトで作成する場合、文字コードをBOMなしで保存して下さい。メモ帳で作成する場合はデフォルトの「ANSI」で保存します。メモ帳で作成・保存する場合、拡張子「.txt」が付き保存されてしまいます。「.txt」はFTPなどでアップロード後に削除できます。

.htaccessファイルのアップロードする場所

全体に指示するのならば、一番上のディレクトリにアップロードします。指示したいディレクトリにアップロードします。

php.iniの設定
php.iniの設定

.htaccessファイルのリダイレクトの記述「Mod_Rewrite」

Mod RewriteはアクセスしたURLを書き換えるモジュール(機能)です。URLのパス(文字列)の記述ができます。

すべてをリダイレクト

Redirectを利用

  • Redirect permanent /http://○○○.com/
  • Redirect permanent /http:/○○○.com/
Redirect permanent301
Redirect temp302

Rewriteを利用

  • RewriteCond (条件)転送元
  • RewriteRule (ルール)転送先
  • RewriteEngine on
  • RewriteCond %{HTTP_HOST} ^(example\.com)(:80)? [NC]
  • RewriteRule ^(.*) //○○○.com/$1 [R=301,L

※転送先URLを「//○○○.com/」転送元URLを「example.com」とする。

RewriteEngine onMod Rewriteの機能をON
RewriteBaseベースとなるパス
RewriteCond条件
RewriteRuleルール
HTTP_HOSTサーバーのホスト名
8080ポート(http)にアクセスがある
[NC]大文字小文字関係なく
R=301301リダイレクトで、Rのみは302
Lこれが最後
(.*)文字を繰り返す

コンピューターネットワークにおいて、HTTPは、Webサーバのポート80番を割り当てられ、接続されています。

正規表現

文字意味マッチ
^直後の文字が先頭に一致^exampleexample.・・
$直前の文字が末尾に一致example$・・example
文字意味マッチ
?直前の表現が0個か1個no?tente、note
*直前の文字を0個以上no*tente、note、noote、nooote等
+直前の文字が1個以上no+tenote、noote等
|またはtsutaya|tutayatsutayaまたはtutaya
()グループ化t(su|u)tayatsutayaまたはtutaya
\直後の正規表現をエスケープexample\.comexample.com
,任意の一文字.*文字を繰り返す

example\.com 直後の世紀表現をエスケープ

.任意の一文字をエスケープ

  • example.com

ディレクトリの変更(/ランチ/以下のパスに変更がない場合)

//example.com/ランチ/test.html →//example.com/和食/ご飯/test.html に変更。

※日本語で記載しました。

Redirectを利用

  • Redirect permanent /ランチ/ //example.com/和食/ご飯/

Rewriteを利用

  • RewriteEngine on
  • RewriteBase /
  • RewriteRule ^ランチ/(.*)$ //example.com/和食/ご飯/$1 [R=301,L]

ページのリダイレクト

//example.com/ランチ/ハンバーグ.html →//example.com/料理/洋食.html に変更。

※日本語で記載しました。

Redirectを利用

  • Redirect permanent /ランチ/ハンバーグ.html //www.example.jp/料理/洋食.html

Rewriteを利用

RewriteEngine on
RewriteBase /
RewriteRule ^/ランチ/ハンバーグ.html //www.example.jp/料理/洋食.html [R=301,L]

特定のディレクトリをリダイレクトから除外

  • RewriteCond %{REQUEST_URI} !(^/除外ディレクトリ名/)

※日本語で記載しました。

ランチを除外する

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/ランチ/)
RewriteRule ^(.*) //www.example.com/$1 [R=301,L]

除外

{REQUEST_URI} !除外

About ゆきを

ジャンルに拘らずに、好きなことを書いてます。 趣味であったり、覚書きであったりします。 むずかしい言葉を使わず、流行りの言葉を使わないように書いてます。