最近サーバー開発をやるようになってから、.htaccessを使ってリダイレクトさせる方法を学んだので、今後のためにメモとして残しておきたいと思います。
.htaccessについて
まず「.htaccess」はどんなものかというと、Webサーバーをディレクトリ単位で制御できるファイルのことで、アクセスさせたくないURLにアクセスされた場合にリダイレクト処理を行ったり、ディレクトリ単位でBasic認証をかけたりできます。
「.htaccess」については以下あたりが参考になりました↓
www.seohacks.net
qiita.com
.htaccessの具体的な使い方としては以下です。
.htaccessでhttp→httpsにリダイレクトさせる
httpsのサイトにhttpでリクエストがきた場合に、httpsにリダイレクトさせたい時は.htaccessは以下のような感じになります。
# http→httpsにリダイレクト RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://abc.com/$1 [R=301,L]
.htaccessでwwwありのリクエスト→wwwなしにリダイレクトさせる
http://abc.comに来て欲しいのに、http://www.abc.comでリクエストがきてしまった場合、http://abc.comにリダイレクトさせたい時はこんな感じ↓
# wwwなしに統一 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.abc\.com RewriteRule (.*) http://abc.com/$1 [R=301,L]
SEO的にはURLは統一した方がいいらしいので、wwwありかwwwなしかで統一した方が良さそうです。
.htaccessでindex.htmlを表示させないようにする
http//abc.com/index.htmlにアクセスがあった場合にindex.htmlを表示させたくない時(http://abc.com/にアクセスさせたい)はこんな感じ↓
# index.htmlにアクセスした場合にindexを表示しない #RewriteEngine on #RewriteCond %{THE_REQUEST} ^.*/index.html #RewriteRule ^(.*)/index.html$ http://abc.com/$1 [L,R=301]
.htaccessで特定のページからリダイレクトさせる
特定のページにアクセスがあった場合にリダイレクトさせたい場合は以下のような感じになります↓
# 特定のページのリダイレクト #RewriteEngine on #RewriteRule ^tools/test.html$ #http://abc.com/tools/test2.html [L,R=301]
上記の場合はtools/test.htmlにアクセスがあった場合、http://abc.com/tools/test2.htmlにリダイレクトさせてます。
ディレクトリ構造を変えたり、ファイル名を変更した場合などに使えそうです。