Home > SEO | Web制作全般 > .htaccess で、ページごとにピンポイントで 301 リダイレクトする方法。

.htaccess で、ページごとにピンポイントで 301 リダイレクトする方法。

[読了時間の目安:約 2 分]

ディレクトリごとリダイレクトする方法は過去の記事にも書いてますし、ググれば比較的すぐに見付かります。

一応書いとくと、

Redirect permanent /old/ http://www.btmup.com/new/

こんな感じですね。
「/old/」がリダイレクト元、「http://www.btmup.com/new/」がリダイレクト先です。

ただ、これだとリダイレクト先までディレクトリになってしまって、特定のページへピンポイントでリダイレクトさせることができません

という訳で、その方法のメモ。
これも調べりゃ見付かるんですが、そこそこメンドくさいので基本的な書式だけ残しておきます。

RewriteRule ^old/index.html$ /new.html [R=301,L]

↑こんな感じ。

使い方としては、まぁ見た通りですが、「^old/index.html$」がリダイレクト元で「/new.html」がリダイレクト先になります。
リダイレクト元の「^」は文字列の先頭を表す正規表現ですが、まぁ「ドメイン以降の文字列の始まり」と考えれば分かりやすいですかね。
リダイレクト先の書式は、アンカー要素に設定するような感じで、ルートからのパスをそのまま(正規表現などではなく)設定してください。

あとの詳しい説明は割愛します(←説明できないだけ)。

あ、「RewriteEngine on」「RewriteBase /」も一応お忘れなく。

Comments:2

奈良のいい所 11-05-12 (木) 23:16

こんにちは。
はじめまして。

301リダイレクトの方法を探していて、こちらのページにたどり着きました。
記事、非常に勉強になります。

ありがとうございます。

1点、どうしても解決できない問題があり、質問させていただきたいのですが、

/yasai というディレクトリを /yasai.html にリダイレクトにするにあたって、

/yasai配下の/yasai/tomatoは引きずられて/yasai.htmlにリダイレクトさせない設定の

記述方法がどうしてもわからずにおります。

RewriteRule ^yasai/index.html$ /yasai.html [R=301,L]

↑↑↑
なども試してみたのですが、yasai配下の階層たちまでどうしてもリダイレクトされてしまいます。

特定のディレクトリ(サブカテゴリーを引きづらずに)を特定のページをリダイレクトさせる方法について、もしご存知でしたらご教授いただけると幸いでございます。

お願コメントで気を悪くされたら即刻削除してください。
失礼いたしました。

kbysbtmup 11-05-13 (金) 21:01

>奈良のいい所さん
コメントありがとうございます。
ご質問いただいた件なんですが、あるディレクトリに含まれるページすべてを特定のページにリダイレクトさせる、ということでしょうか?
であれば、下層ディレクトリのページも対象に含まれるので、当然リダイレクトされます。

僕もそれほど詳しい領域ではないので、明確な答えは持っていませんが、リダイレクトさせたくないディレクトリが特定できるのであれば、例えば
RewriteCond %{REQUEST_URI} !(^/yasai/tomato/)
などで除外できるんじゃないでしょうか。(未検証ですが……)
一度試してみてください。

Comment Form
Remember personal info

Home > SEO | Web制作全般 > .htaccess で、ページごとにピンポイントで 301 リダイレクトする方法。

リンク
フィード
メタ情報

このページのトップへ