htaccessリダイレクトの概要について|初めての学習、復習用に
2022.10.20 Posted by takahashi.r
Web担当者ならhtaccessの操作を行った経験のある方もいるでしょう。このファイルがどのようなものか知ったうえで、操作している方もいるかもしれませんが、今ひとつよくわからずに操作している方もいるかと思います。
今回は、htaccessとはいったいどのようなファイルなのか、どういったことが実現できるのか、htaccessの概要から詳細を解説していきます。これから初めてhtaccessを操作するために調べている方、また既にある程度概要は理解していて何度か操作したことがある方も復習として読み進めてみてください。
目次
htaccessの基本
まずは、htaccess概要と有効範囲、設置場所についてご説明します。
htaccessとは
Apacheが使用されている環境で、Webサーバーの基本的な動作をディレクトリ単位で設定するためのファイルです。
通常、Webサーバーの設定を変更するには、ターミナル画面を開き、コマンド操作が必要となります。そのため、サーバーに対する専門的な知識がなければ、Webサーバーの設定変更は不可能となっています。
しかし、htaccessを利用すればWebサーバーに対して専門的な知識がなくても、簡単にサーバーの設定が可能になります。つまり、専門的な知識がなくてもWebサーバーに命令を出すことができるのがhtaccessファイルなのです。
SEO対策の際でも、htaccessの設定変更はよくでてくるので、Web担当者は是非必要な知識はもっておきましょう。
htaccessはどこまで有効?設置場所は?
htaccessを利用することで、次のことを実現できます。
- Webサイトを移転する際に、引っ越し先となるWebサイトへ、ユーザーをリダイレクトさせることができる
- WebサイトにIDやパスワード認証を設置し、会員サイトにできる
- 特定のIPアドレスをアクセス不可にできる
他にもエラーメッセージの表示やURLの正規化など、できることはたくさんあります。htaccessは、サーバーにファイルをアップロードすれば、簡単に設定変更が可能なため、正しい知識や技術を習得し、実践してみましょう。
なお、htaccessを設置した場合、設定変更が有効なのは、設置した場所とその下層に限定されます。
【ディレクトリ1htaccess設置】
└【ディレクトリ1-1】
└【ディレクトリ1-2】
└【ディレクトリ1-3】
この場合、エリア1以下の階層で設定が有効(下階層にも適用)となります。
htaccess設定の必要性とメリット
htaccess設定は、どうして必要なのでしょうか。次に、htaccess設定の必要性についてご説明します。
htaccess設定は何故必要?しないとどうなる?
htaccess設定によって、旧サイトから新サイトへとリダイレクト設定を行わなければ、旧サイトのSEO評価を引き継ぐことができません。SEO評価を引き継がなければ、新サイトでSEO評価ゼロからの開始となるため、しっかりとリダイレクト設定しましょう。
htaccess設定で得られるメリットは?
htaccess設定を利用すれば、次のようなメリットがあります。
- リダイレクトでSEOの評価を引き継ぐことができる
- 認証機能でWebサイト公開前に、関係者だけでデザインや機能チェックができる
- 社外アクセスが必要なければ、簡単に制限できる
- エラーページを作成できる
このように、htaccessを設定することでさまざまなメリットがあります。
リダイレクトの種類と設定方法
リダイレクトには、さまざまな種類がありますが一般的に、301と302がよく使われるため、2つの特徴についてご説明します。
- 301リダイレクト(恒久的):WebサイトやURLの変更時、旧URLから新URLへ転送する際に利用する
- 302リダイレクト(一時的):スマホとパソコンでアクセスを分けるなど一時的にページ転送が必要な際に利用する。
また、リダイレクトの推奨設定期間ですが、Googleの見解によれば約1年間は設定しておいた方が良いといわれています。もし、古サイトに一定のアクセスが続くようであれば、そのWebサイトへのアクセスがなくなるまで、設定を継続しましょう。また、リダイレクト設定においては、次のコマンドの役割を理解しておくと、必要なものを正しく扱えるようになります。
RewriteEngine On
RewriteEngine Onは、mod rewriteというApacheで条件指定をしてURLを書き換えをする際、一緒に書く宣言文です。記述の仕方は次のとおりです。
RewriteEngine On
Redirect permanent / https://新ドメイン/
RewriteCond
mod rewrite を記述する際にURL書き換えの「適用条件」を指定するために利用します。
たとえば、SSL化でhttpからhttpsにリダイレクトが必要な場合、次のようにコマンドを記述すると、httpsへとリダイレクトできます。
RewriteEngine on →宣言文
RewriteCond %{ HTTPS} off→条件:httpsになっていない場合
RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{REQUEST_URI} [R=301,L]→このURLに飛ばす
RewriteRule
RewriteRuleは、リダイレクトにおいて、コマンド実行時の構文のことでURLの書き換えルールを指定します。「sample.com/aa/page.html」→「sample.com/bb/page.html」に変更する場合、次のようにコマンドを記述します。
RewriteEngine on
RewriteRule ^aa(.*)$ /bb$1 [R=301,L]
リダイレクト設定時の注意点
大規模なリダイレクト設定を行う場合は、変更前に対応表を作成して間違いがないようにしましょう。対応表があれば、正しくリダイレクトできているか、簡単にチェックできます。
WordPress利用者の方へ
WordPressを利用している場合は、あらかじめ.htaccessが設置されている可能性があることを理解しておきましょう。
FTPツールによっては.htaccessが「隠しファイル」として非表示になっていることがあります。その場合は「表示」→「.で始まるファイルを表示」や「不可視ファイルを表示」のような項目から非表示ファイルを表示できるため、覚えておきましょう。
そして、ディレクトリと個別ページでそれぞれ設定する際には、上から優先的に処理されます。次のような記述でないと全て親ディレクトリにリダイレクトされてしまって、リダイレクトが上手くいきません。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^folder/aaa$ http://新ドメイン.com/folder/xxxxx [R=301,L]
RewriteRule ^folder/bbb$ http://新ドメイン.com/folder/yyyyy [R=301,L]
RewriteRule ^folder/ccc$ http://新ドメイン.com/folder/zzzzz [R=301,L]
RewriteCond %{HTTP_HOST} ^旧ドメイン.com
RewriteRule ^(.*) http://新ドメイン.com/$1 [R=301,L]
</IfModule>
リダイレクトの適用は、上から順番に行われるため、個別の設定を上層で行うことで、正しく操作が実行されます。
nginx利用者の方へ
もし、nginxをご利用の場合は、htaccesファイルが利用できません。nginx用への変換ツールが存在するため、利用する際は自分に使いやすいものを色々見てみてください。
まとめ
htaccessの設定と聞くと難しく思うかもしれませんが、基本的なリダイレクト方法さえ覚えてしまえば、問題なく扱えるようになります。代表的な方法だけ覚えて、Webサイトのリダイレクトや変更時に有効利用していきましょう。
関連記事こちらの記事も合わせてどうぞ。
2024.10.23
2024.09.20
2024.07.24