.htaccess

.htaccessは、Apacheを用いたWebサーバの設定ファイルの中でサーバ管理者以外のサーバ利用者に解放された設定ファイルで、利用者にもサーバ設定の一部を可能にしたもの。

設定
タグで指定したディレクトリに対するアクセス制限の設定
order deny,allow … 拒否定義をした上で、許可するユーザを特定する。
Order allow,deny 許可してから拒否
Allow from 対象 対象ユーザのアクセスを許可
Deny from 対象 対象ユーザのアクセスを拒否
対象として指定できるもの
All 全て
IPアドレス 指定IPアドレスを持つユーザ
ドメイン名又はホスト名 ドメインやホスト名が後方一致する

<Directory “D:/Apache Group/Apache2.2/htdocs”>
Order allow,deny
Allow from all
Deny from 192.168.1.0/24

アクセス切り替えhtaccess01

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone|chrome) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^$ /new_ver/sp/ [R,L]

/で終わるURLでアクセスした場合に、Deviceがスマートホン(例ではテスト用にChromeを追加)の時にはアクセスしたパス(/new_ver)に置かれた.htaccessファイルに記述された(アクセスしたパス下の)別パス(/new_ver/sp/)にリダイレクトして、そのパスのindex.htmlにアクセスする。
iPhoneの場合、ファイルまで指定(/new_ver/sp/index.html)しないと切り替わらない。
逆にChromeではファイルまで指定すると切り替わらない。

アクセスするhtmlファイルの名前はindex.htmlである必要がある
もしくは直前にDirectoryIndexで特定のファイルを指定しておく必要がある。

RewriteEngine On
リダイレクト開始宣言

RewriteCond %{HTTP_USER_AGENT}…
RewriteCond %{変数名} (一致パターン) [フラグ]
変数名 アクセス端末のユーザエージェント名
一致パターン 「iPhone」または「Android + Mobile」または「Windows + Phone」という文字列が存在する場合、という条件指定
フラグ NC:大文字・小文字を区別しない

RewriteCond %{QUERY_STRING} !mode=pc
URLの末尾に「?mode=pc」という文字列が付いていた場合には、スマートフォン用ページに移動させない
変数名 URL末尾に付加された「?」記号以降の文字列
一致パターン QUERY_STRING内にmode=pcという文字列がなければ、という条件指定
フラグ NC:大文字・小文字を区別しない

RewriteRule ^$ /sp/ [R,L]
htaccessファイルを設置した場所にアクセスした場合に、クスセスしたディレクトリ下の/sp/ディレクトリにアクセスする。
フラグ R:リダイレクトする  L:書き換え規則の最終行であることを示し、以降のRewriteRuleは無視される
移動先を他のドメインにしたい場合は、
RewriteRule ^$ http://sp.example.com/ [R,L]
と記述

デフォルトファイルの設定変更
「/」で終わるURL(ディレクトリ名で終わるURL)でアクセスすると、そのディレクトリ内のindex.html ファイルにアクセスします。
「.htaccess」ファイルに
DirectoryIndex toppage.cgi
と記述すると、指定URLにアクセスした時、index.html ではなく toppage.cgi というファイルにアクセスが切り替わります。
DirectoryIndex frontpage.php headpage.shtml index.html
半角スペースで区切って、表示候補を優先順に列挙できます。

注意:iPhone5ではこのデフォルトファイル名変更は機能しない。代わりにリダイレクト時任意のファイル名まで記述して、対応する。
また、デフォルトファイル名変更、リダイレクトが正しく行われてもサーバごとの設定によりInternal Server Errorを起こす場合があるので、ここに確認する必要がある。

htaccess02

.htaccess使用上の注意
.htaccessを設置すると、ブラウザー(ex. Chrome)によって設置されたパス以下をアクセスしてもhtmlのソースが表示されたりする不具合が発生する場合がある。この場合はサーバ管理者に相談するしかないので、サーバ管理者の協力が得られない場合は.htaccessの設置ではない別の方法、例えばJavascriptでスマートフォン用のパス切り分けを行う必要がある。

カテゴリー: ウェブサイト作成の秘訣 タグ: , パーマリンク