サイトのリニューアルやドメインの変更、あるいはSSL化の対応など、Webサイトを運営していると「古いURLから新しいURLへ自動的に転送したい」という場面に出くわしますよね。
そんな時に必要になるのが「.htaccess」ファイルを使った301リダイレクトです。
「黒い画面に暗号のようなコードを書くのは怖そう…」
「失敗してサイトが見られなくなったらどうしよう…」
そんなふうに不安を感じている方も多いのではないでしょうか。でも、大丈夫です。
この記事では、初心者の方でも安心して設定できるように、コピペでそのまま使える記述コードをパターン別にまとめました。
SEOの評価をしっかり引き継ぎ、ユーザーを迷子にさせないためにも、正しいリダイレクト設定はとても重要です。
難しい理屈は抜きにして、まずは「どう書けば動くのか」という解決策から見ていきましょう。この記事を読みながら進めれば、きっとスムーズに設定完了できるはずですよ。
このページに書いてあること
【コピペOK】htaccessによる301リダイレクトの記述コード一覧

ここでは、Webサイト運営でよく使われる301リダイレクトの記述コードをパターン別にご紹介します。
これから紹介するコードは、サーバー上の「.htaccess」というファイルに記述して使います。
設定時の重要なポイント
- コードを利用する際は、URL部分をご自身のサイトに合わせて書き換えてください。
RewriteRuleなどを使う場合、ファイルの先頭にRewriteEngine Onという記述が一度だけ必要になることがあります。
それでは、あなたの目的に合ったコードを探して、コピーして使ってみてくださいね。
特定の1ページを別のページへ転送する記述
ページ単位での転送は、記事のURLを変更した場合や、特定のページだけを新しい場所に移動させたい時によく使います。
最もシンプルで基本的な書き方ですね。
記述コード例
Redirect 301 /old-page.html https://example.com/new-page.htmlCode language: JavaScript (javascript)
- 左側: ドメイン以下の古いパス(
/から書き始めます) - 右側: 転送先の新しい完全なURL(
https://から記述します)
この1行を追記するだけで、古いページにアクセスしたユーザーを自動的に新しいページへ案内できますよ。サイト内での記事のお引越しなどに活用してくださいね。
ディレクトリ(フォルダ)単位で転送する記述
カテゴリーの変更などで、フォルダ(ディレクトリ)ごとURLが変わるケースもありますよね。
1ページずつ設定するのは大変ですが、ディレクトリ単位で指定すれば、その中のファイルもまとめて転送できるので便利です。
ただし、ディレクトリ以下の階層構造を保ったまま転送するには、Redirectディレクティブではなく、mod_rewriteを使った記述が必要です。
記述コード例
RewriteEngine On
RewriteRule ^old-dir/(.*)$ https://example.com/new-dir/$1 [R=301,L]Code language: JavaScript (javascript)
(.*)で転送元のパスをキャプチャし、$1として転送先に引き継ぐことで、以下のように対応するファイルへ自動的に転送されます。
/old-dir/page1.html→.../new-dir/page1.html/old-dir/sub/image.jpg→.../new-dir/sub/image.jpg
階層構造を保ったまま引っ越しができるので、.htaccessのリダイレクト301設定の手間が大幅に省けます。なお、このコードを使用する際はサーバーでmod_rewriteが有効になっていることを確認してみてください。
旧ドメインから新ドメインへサイトごと転送する記述
サイト全体を新しいドメインへ引っ越した場合は、すべてのアクセスを一括して新ドメインの同じページへ転送する必要があります。
これをやらないと、今までの検索順位や被リンクの評価がリセットされてしまうので、SEOにおいて非常に重要です。
記述コード例
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]
</IfModule>Code language: HTML, XML (xml)
https://new-domain.com の部分は、あなたの新しいドメイン名に書き換えてくださいね。
これで、どのページにアクセスされても、新ドメインの対応するページへスムーズに案内されます。
URLを「wwwあり」に統一する記述
「www.example.com」と「example.com」は、検索エンジンからは別のサイトとして扱われてしまうことがあります。
SEOの評価を分散させないために、どちらかに統一(正規化)するのが一般的です。ここでは「wwwあり」に統一する方法を見てみましょう。
記述コード例
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
</IfModule>Code language: HTML, XML (xml)
この設定をしておけば、「wwwなし」でアクセスしてきた人も、自動的に「wwwあり」のURLへ転送されます。URLが一本化されて、SEOの効果も高まりますよ。
URLを「wwwなし」に統一する記述
最近のトレンドとしては、URLを短くシンプルにするために「wwwなし」で統一するサイトが増えています。
もし「wwwなし」を正規のURLとしたい場合は、以下のコードを使用してください。
記述コード例
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</IfModule>Code language: HTML, XML (xml)
これで、うっかり「www」をつけてアクセスしてしまったユーザーも、正しい「wwwなし」のURLへ誘導できます。ご自身のサイトの方針に合わせて、あり・なしを選んでくださいね。
httpからhttpsへ常時SSL化の転送をする記述
Webサイトのセキュリティを強化する「SSL化(https)」を行ったら、必ず設定しておきたいのがこの転送です。
古い「http」のままアクセスしてくるユーザーを、安全な「https」へ自動的に切り替えます。
記述コード例
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>Code language: HTML, XML (xml)
この記述があれば、ユーザーがブックマークなどで古い「http」のURLを開いても、瞬時に鍵マーク付きの「https」へ転送されます。ユーザーに安心感を与えるためにも必須の設定ですね。
URL末尾のindex.htmlやindex.phpをなしに統一する記述
トップページなどで「index.html」や「index.php」がURLの末尾に付いていると、見た目が少し野暮ったく感じることがありますよね。
また、これもSEOの評価分散の原因になり得ます。
記述コード例
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.(html|php)$ / [R=301,L]
</IfModule>Code language: HTML, XML (xml)
この設定を行うと、example.com/index.html へのアクセスが、スッキリとした example.com/ に統一されます。
URLがきれいになると、シェアされた時も見栄えが良くなりますよ。
なぜ301リダイレクトが必要なのか?SEOとユーザーへのメリット

「そもそも、なぜわざわざ301リダイレクトなんて面倒な設定をしないといけないの?」と疑問に思う方もいるかもしれません。
単にページを表示させるだけなら、新しいURLを告知するだけでも良さそうに思えますよね。
しかし、301リダイレクトを行わないと、実はWebサイト運営において大きな損失を生んでしまう可能性があるのです。
ここでは、SEO(検索エンジン対策)とユーザー体験(使いやすさ)の2つの視点から、その重要性を解説します。
旧URLのSEO評価(被リンクやドメインパワー)を引き継ぐため
Webサイトを長く運営していると、他のサイトからリンクを貼ってもらったり(被リンク)、検索エンジンからの信頼(ドメインパワー)が蓄積されたりします。これらはSEOにおいて貴重な財産です。
もしリダイレクトをせずにURLを変えてしまうと、これらの評価は「ゼロ」に戻ってしまいます。まるで、お店の場所が変わったのにお客さんに地図を渡さず、名声もリセットされて一からやり直しになるようなものです。
301リダイレクトは「恒久的な移動」を意味するため、検索エンジンに対して「このページの評価は、新しいページに引き継いでくださいね」と伝える役割を果たします。これにより、これまでの努力を無駄にせず、検索順位への悪影響を最小限に抑えられるのです。
ユーザーが古いURLにアクセスした際の離脱を防ぐため
ユーザーは、ブックマークや過去のSNSの投稿、あるいは他サイトのリンクからあなたのサイトを訪れます。
もしリダイレクト設定がされていないと、ユーザーは「404 Not Found(ページが見つかりません)」というエラー画面に直面することになります。
せっかく興味を持って来てくれたのに、エラー画面が出たらどう思うでしょうか?
「あ、もうこのサイトは無くなったんだな」と諦めて、すぐにブラウザを閉じてしまうでしょう。
301リダイレクトを設定しておけば、古いURLにアクセスしても自動的に新しいページが表示されます。ユーザーは何のストレスもなく目的の情報にたどり着けるため、機会損失や離脱を防ぐことができるのです。
302リダイレクト(一時的な転送)との使い分けについて
リダイレクトには「301」の他に「302」という種類があります。この2つの違いを理解しておくことも大切です。
- 301リダイレクト: 恒久的な転送。「もう元の場所には戻りません」という完全な引っ越し。SEO評価を引き継ぐ。
- 302リダイレクト: 一時的な転送。「メンテナンス中なので一時的にこっちを見てね」という仮の移動。SEO評価は基本的に引き継がない(または時間がかかる)。
サイトリニューアルやドメイン変更など、今後ずっと新しいURLを使う場合は、迷わず301リダイレクトを選びましょう。
逆に、数日間のメンテナンス画面への誘導など、すぐに元に戻す予定がある場合のみ302を使います。この使い分けを間違えないように注意してくださいね。
初心者でも失敗しない.htaccessファイルの作成と編集手順

.htaccessファイルは非常に強力な設定ファイルですが、記述を一つ間違えるとサイト全体が表示されなくなるリスクもあります。
「なんだか怖そう…」と感じるかもしれませんが、正しい手順と注意点を守れば、初心者の方でも安全に編集できます。
ここでは、トラブルを避けて確実に設定を行うための具体的な手順を、ステップバイステップで解説していきますね。
テキストエディタを使ってファイルを作成・編集する
.htaccessファイルを編集する際は、使うソフト選びがとても重要です。
Windowsに標準搭載されている「メモ帳」は、実はあまりおすすめできません。保存する際に、目に見えない不要な文字コード(BOM)が含まれてしまい、エラーの原因になることがあるからです。
おすすめのテキストエディタ
- Windows: TeraPad, Notepad++, Visual Studio Code
- Mac: CotEditor, Visual Studio Code, Sublime Text
これらの「コード編集用」のエディタを使いましょう。文字コードは「UTF-8(BOMなし)」、改行コードは「LF」に設定して保存するのが鉄則です。
まずは、これらのエディタを開いて、先ほど紹介したコードを記述してみてくださいね。
ファイル名を「.htaccess」として保存する際の注意点
ファイル名にも少し特殊なルールがあります。
通常、ファイル名は「image.jpg」のように文字から始まりますが、このファイルは「.(ドット)」から始まる「.htaccess」という名前でなければなりません。
パソコンの設定によっては、先頭にドットをつけると「ファイル名を入力してください」と怒られたり、勝手に「.htaccess.txt」のように拡張子がついてしまったりすることがあります。
もしうまく保存できない場合は、一旦「htaccess.txt」として保存し、サーバーにアップロードした後で名前を変更するという裏技もありますよ。
ファイル名が正確でないとサーバーが認識してくれないので、一文字一句間違えないように注意しましょう。
既存のファイルがある場合は必ずバックアップをとる
これが最も重要な手順と言っても過言ではありません。
サーバー上には、すでにWordPressやレンタルサーバー会社が作成した.htaccessファイルが存在していることが多いです。
いきなり上書き保存をしてしまうと、もし記述ミスがあった時に元の状態に戻せなくなってしまいます。
作業を始める前に、必ずFTPソフトなどを使って、サーバーにある現在の.htaccessファイルを自分のパソコンにダウンロード(保存)しておきましょう。
「original_htaccess」のように名前を変えて保管しておけば安心です。万が一画面が真っ白になっても、このバックアップファイルをアップロードし直せば、すぐに元の状態に復旧できますよ。
FTPソフトを使ってサーバーの正しい階層にアップロードする
ファイルの準備ができたら、いよいよサーバーへアップロードします。
この時、「FileZilla(ファイルジラ)」などのFTPソフトを使うのが確実です。
アップロードする場所(階層)は、リダイレクトを効かせたい範囲によって決まります。
- サイト全体に適用したい場合: 一番上の階層(ルートディレクトリ。通常は
public_htmlやwww直下) - 特定のフォルダ内だけに適用したい場合: そのフォルダの中
基本的には、index.html や wp-config.php がある場所と同じ階層に置くことが多いです。
ドラッグ&ドロップでアップロードしたら、ブラウザで実際にアクセスして、正しく転送されるか確認してみてくださいね。
設定後にエラーが出た場合のトラブルシューティング

手順通りにやったつもりでも、いざアクセスしてみるとエラーが出たり、思い通りに動かなかったりすることはよくあります。
でも、焦らなくて大丈夫です。エラーには必ず原因があります。
ここでは、よくあるトラブルの症状とその対処法をまとめました。
もし問題が起きたら、このリストをチェックして一つずつ確認していきましょう。
画面が真っ白になる「500 Internal Server Error」の対処法
設定後にサイトにアクセスして「Internal Server Error」という文字が出て画面が真っ白になった場合、原因のほとんどは記述ミス(構文エラー)です。
チェックポイント
- 全角スペースが混じっていませんか?(コード内のスペースはすべて半角である必要があります)
- スペルミスはありませんか?(
RedirectをRediretと書いているなど) RewriteRuleを使うのにRewriteEngine Onの記述が抜けていませんか?
特に、コピペした際に余計な空白文字が入ってしまうケースが多いです。エディタで全角スペースを表示する設定にして確認するか、もう一度慎重にコードを見直してみましょう。バックアップに戻せばすぐに直るので、落ち着いて対処してくださいね。
転送されずに元のページが表示されてしまう時の確認事項
コードを記述したのに、なぜか古いページのまま変わらない…という場合もあります。
このケースでは、以下の点を確認してみてください。
確認事項
- .htaccessファイルを置く場所(階層)は合っていますか?
- ファイル名は正確に「.htaccess」になっていますか?(「.htaccess.txt」になっていませんか?)
- レンタルサーバー側で.htaccessの利用が制限されていませんか?(Nginxなど、Apache以外のサーバーでは動きません)
また、WordPressを使っている場合、WordPressが自動生成する記述(# BEGIN WordPress ~ # END WordPress)よりも上にリダイレクトの記述を書くことで解決することがあります。記述する位置を変えて試してみてください。
「リダイレクトが繰り返し行われました」と表示される時の直し方
ブラウザに「このページは動作していません」「リダイレクトが繰り返し行われました」と表示されることがあります。
これは「リダイレクトループ」と呼ばれる状態で、AページからBページへ、BページからAページへと、転送が無限に繰り返されている状態です。
よくある原因
- 転送元と転送先のURLが実質同じになっている
- SSL化のコードと、WordPress側の設定が競合している
例えば、「httpからhttpsへ転送」する設定をしているのに、プログラム側で「httpsからhttpへ戻す」ような処理が動いているとループします。
記述内容に矛盾がないか、論理的に行ったり来たりしていないかを見直してみましょう。
ブラウザのキャッシュが原因で反映されないケース
実は設定は成功しているのに、手元のブラウザだけで反映されていないというケースも非常に多いです。
ブラウザは一度アクセスした情報を「キャッシュ」として記憶するため、古い情報(転送前の状態)を表示し続けている可能性があります。
確認方法
- ブラウザのキャッシュを削除(クリア)してからアクセスする
- Chromeの「シークレットモード(プライベートブラウジング)」でアクセスしてみる
- 別のブラウザやスマホからアクセスしてみる
「設定を変えたのに反映されない!」と思ったら、まずはシークレットモードで確認するのが一番確実ですよ。キャッシュが原因だった、というオチは意外と多いものです。
【応用】正規表現(mod_rewrite)を使った高度なリダイレクト設定
を使った高度なリダイレクト設定/【応用】正規表現(mod_rewrite)を使った高度なリダイレクト設定.jpg?_i=AA)
ここまでは基本的な設定を紹介してきましたが、.htaccessには「正規表現」という強力な機能があります。
これを使うと、一つひとつのURLを書かなくても、法則性のあるURLをまとめて転送することができます。
少し難易度は上がりますが、記事数が数百、数千あるサイトの引っ越しなどでは必須のテクニックです。
「こういうこともできるんだ」と知っておくだけでも、今後の役に立つはずですよ。
ファイル名の規則性を利用してまとめて転送する方法
例えば、商品IDだけが異なる何千ものページを、新しいURL形式に書き換えたい場合などに正規表現が活躍します。
例:old-product-123.html を new-product-123.html へ転送
RewriteRule ^old-product-([0-9]+)\.html$ /new-product-$1.html [R=301,L]Code language: JavaScript (javascript)
ここで使われている ([0-9]+) というのが「数字の並び」を表す正規表現です。
この部分にマッチした数字が、転送先の $1 という部分に代入されます。
これにより、数字の部分が「123」でも「999」でも、たった1行のコードですべて対応できるようになります。規則性があるURL変更には最強の時短テクニックですね。
RedirectMatchを使って条件を指定する方法
mod_rewrite 以外にも、RedirectMatch という指令を使うことでも正規表現が利用できます。
こちらは記述が少しシンプルになるのが特徴です。
記述コード例
RedirectMatch 301 ^/blog/(.*)$ https://example.com/news/$1Code language: JavaScript (javascript)
この例では、/blog/ 以下のすべてのページを、/news/ 以下の同じファイル名のページへ転送します。
例えば /blog/article.html は /news/article.html に転送されます。
ディレクトリ構造だけが変わるような大規模なサイトリニューアルの際によく使われる記述です。ご自身のサイトの変更パターンに合わせて、使いやすい方を選んでみてください。
まとめ

今回は、.htaccessを使った301リダイレクトの設定方法について、コピペで使えるコードを中心に解説しました。
記事のポイントを振り返ってみましょう。
- 301リダイレクトはSEOとユーザー体験を守るために必須
- 目的に合ったコードを選んで、URLを書き換えるだけでOK
- 作業前には必ずバックアップを取り、テキストエディタで編集する
- エラーが出ても焦らず、記述ミスやキャッシュを確認する
「サーバーの設定ファイルを触る」というのは、最初は誰でも緊張するものです。
しかし、この記事で紹介した手順とコードを使えば、専門的な知識がなくても安全にリダイレクトを実装できます。
正しいリダイレクト設定ができれば、これまで積み上げてきたサイトの評価を落とすことなく、新しい環境でもスムーズに運営を続けられます。
ぜひ、恐れずにチャレンジしてみてくださいね。あなたのWebサイト運営がより良くなることを応援しています!
htaccess リダイレクト 301についてよくある質問

ここでは、htaccessを使った301リダイレクトに関して、初心者の方がよく抱く疑問にQ&A形式でお答えします。
よくある質問
- Q1. WordPressのプラグインと.htaccess、どちらで設定すべきですか?
- A. 基本的には「.htaccess」での設定をおすすめします。プラグインは手軽ですが、入れすぎるとサイトが重くなる原因になりますし、プラグイン自体が更新停止になるリスクもあります。サーバーレベルで処理する.htaccessの方が動作も高速で確実です。
- Q2. リダイレクトの設定が反映されるまでどのくらい時間がかかりますか?
- A. 設定自体は、ファイルをアップロードした瞬間に反映されます。ただし、ブラウザのキャッシュが残っていると古いページが表示されることがあります。また、Googleの検索結果上のURLが切り替わるには、数日から数週間かかる場合があります。
- Q3. 転送元の古いページ(ファイル)は削除してもいいですか?
- A. はい、リダイレクトが正しく動作していることを確認できれば、古いファイルは削除しても問題ありません。ただし、念のため1週間程度は様子を見て、アクセスログなどでエラーが出ていないか確認してから削除するのが安全です。
- Q4. スマホユーザーだけを別のページに転送することはできますか?
- A. はい、可能です。ユーザーエージェント(閲覧端末の情報)を判別する記述を加えることで、スマホとPCで転送先を振り分けることができます。ただし、Googleは現在モバイルファーストインデックスを推奨しているため、URLを分けるよりもレスポンシブデザインでの対応が推奨されています。
- Q5. 301リダイレクトの設定はいつまで残しておけばいいですか?
- A. Googleは「少なくとも1年間」維持することを推奨しています。しかし、他サイトからのリンク(被リンク)が古いURLに残っている可能性を考えると、可能な限り「永続的」に残しておくのがベストです。サーバーの負担になるものではないので、特段の理由がなければそのままにしておきましょう。