htaccessとは?
.htaccessとは、Apacheを用いたWebサーバにおいて、ディレクトリ単位で設置及び設定を行える設定ファイルである。
主に、BASIC認証の追加や、IPアドレスによるアクセスの制限、404エラーページのリダイレクトなどが設定できます。サイトの安全性に寄与したり、利便性向上の作業を簡易化できたりと随所で役立つファイルです。
htaccessで何ができるの?
htaccessを利用することで、さまざまな設定を行うことができます。
たとえば、
・IDとパスワード認証によるアクセス制限
・IP or ドメイン指定によるアクセス制限
・特定ページ(又はディレクトリ)への、リダイレクト設定
「.htaccess」の利用用途としては、ユーザー認証やアクセス制限といったセキュリティ対策で用いられる事が多いです。
1)htaccessによるURL正規化(例)
◆「www」ありなしの統一 (※ドメイン例は「flexion.jp」とします)
1) WWWありに統一 |
RewriteEngine on
RewriteCond %{HTTP_HOST} ^flexion\.jp
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ http://www.flexion.jp/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^flexion\.jp
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ https://www.flexion.jp/$1 [R=301,L]
|
2) WWWなしに統一 |
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.flexion\.jp
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ http://flexion.jp/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.flexion\.jp
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ https://flexion.jp/$1 [R=301,L]
|
◆「http」か「https」の統一 (※ドメイン例は「flexion.jp」とします)
1) httpsに統一 |
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
|
2) httpに統一 |
RewriteEngine on
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
|
2)htaccessによるファイル一覧表示中止(例)
3)htaccessによる各種端末振り分け(例)
1) スマホ端末振り分け処理例 |
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteRule ^$ /sp/ [R=301,L]
</IfModule>
|
2) キャリア別振り分け処理例 |
<IfModule mod_rewrite.c>
RewriteEngine On
# DoCoMo
RewriteCond %{HTTP_USER_AGENT} DoCoMo
RewriteRule ^(.*)$ /docomo/ [R]
# Softbank
RewriteCond %{HTTP_USER_AGENT} (J-PHONE|Vodafone|SoftBank)
RewriteRule ^(.*)$ /softbank/ [R]
# AU KDDI
RewriteCond %{HTTP_USER_AGENT} (KDDI|UP\.Browser)
RewriteRule ^(.*)$ /au/ [R]
# DDI Pocket
RewriteCond %{HTTP_USER_AGENT} DDIPOCKET
RewriteRule ^(.*)$ /ddi/ [R]
# WILLCOM
RewriteCond %{HTTP_USER_AGENT} WILLCOM
RewriteRule ^(.*)$ /willcom/ [R]
# iPod
RewriteCond %{HTTP_USER_AGENT} iPod
RewriteRule ^(.*)$ /ipod/ [R]
# iPhone
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteRule ^(.*)$ /iphone/ [R]
# iPad
RewriteCond %{HTTP_USER_AGENT} iPad
RewriteRule ^(.*)$ /ipad/ [R]
# Android
RewriteCond %{HTTP_USER_AGENT} Android
RewriteRule ^(.*)$ /android/ [R]
# Windows Mobile
RewriteCond %{HTTP_USER_AGENT} Windows\ Phone
RewriteRule ^(.*)$ /win_mobile/ [R]
</IfModule>
|