htaccess
.htaccessとは
.htaccessとはapacheのhttpd.confの設定の一部をディレクトリごとに設定できる設定です。おもにアクセス制御やパスワード制限、リダイレクトなどを設定することができます。apacheのhttpd.confを編集する
vi /etc/httpd/conf/httpd.conf
<Directory />
AllowOverride None
Order deny,allow
Deny from all
</Directory>
AllowOverride を All に設定して、httpd.confの設定を上書き可能にする
<Directory />
Options FollowSymLinks +Indexes
AllowOverride All
Order deny,allow
Deny from none
</Directory>
※レンタルサーバの場合は質問ページ等で制約を確認してください。
.htaccessファイルをつくる
- 適当なフォルダにhtaccess.txtファイルをつくる。
- FFFTPを起動し、httaccessを作ったフォルダへ移動。ファイル名の上で右クリック→名前を変更で「.htaccess」に変更する
- (WINDOWSのエクスプローラでは.htaccessのような名前のファイルを作ることができないため、遠回しな方法が必要になります)
.htaccess記述例
Order Deny Allow
例: Order Deny,Allow Deny from all Allow from all すべての閲覧者を許可 Denyが拒否条件で、Allowが許可条件(Orderで後ろに書いたものが優先される) ErrorDocument 404 http://tt,x0,to/404.html 404(ページが見つからないエラー)のとき、指定のアドレスへ飛ばす これを利用してオリジナルのエラーページを公開できます
Options設定
※さくらのレンタルサーバではOption設定は使えないようです。
None …すべてのオプションを無効にする。 All …MultiViews 以外のオプション全てをを有効する。 ExecCGI …CGIスクリプトの実行を可能にする。 FollowSymLinks …シンボリックリンクを有効にする。 Includes …SSIの利用を可能にします。 IncludesNOEXEC …SSIの利用を制限付きで可能にします。#exec #include 命令が使えません。 Indexes … index.html がない場合、ディレクトリ一覧を表示することを許可する。 MultiViews …MさultiViews 検索を許可する。 記述例 Options ExecCGI FollowSymLinks -Indexes
指定した拡張子でCGIの使用を許可
AddType application/x-httpd-cgi .cgi .pl
指定した拡張子でSSIの使用を許可
AddType text/x-server-parsed-html .shtml
/ (スラッシュ)で終わったURLのとき、優先して表示されるページの指定
DirectoryIndex top.htm index.htm index.cgi デフォルトではindex.html
Alias設定
Aliasを使ってURLの書き換えができます
http://exsample.com/img/* 以下を内部パスでディレクトリ設定する例
Alias /img/ /var/www/img/
ファイル名が正規表現で指定した条件の場合、呼び出しを拒否する
<Files ~ "\.(jpg|jpeg)$> Order Allow,Deny Deny from all </Files>
パスが正規表現で指定した条件に一致した場合、別URLにリダイレクトする
RedirectMatch \/img\/(.*) http://sample.com/img/$1
携帯電話の機種の判別 別URLにリダイレクトする
<Files ~ "(^$|index\.html|^\/$|index\.cgi)"> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} J-PHONE [OR] RewriteCond %{HTTP_USER_AGENT} Vodafone [OR] RewriteCond %{HTTP_USER_AGENT} UP.Browser [OR] RewriteCond %{HTTP_USER_AGENT} MOT [OR] RewriteCond %{HTTP_USER_AGENT} SoftBank [OR] RewriteCond %{HTTP_USER_AGENT} KDDI [OR] RewriteCond %{HTTP_USER_AGENT} DDIPOCKET [OR] RewriteCond %{HTTP_USER_AGENT} WILLCOM [OR] RewriteCond %{HTTP_USER_AGENT} ASTEL|PDXGW RewriteRule ^(.*)$ http://sample.jp/mobile/ [L,R] </Files>
移転時のサイト引継ぎ 301リダイレクト
redirect 301 /(.*) http://www.xxxx.com/$1
Rewrite 動的ページを静的ページにみせる
例1. クエリーを渡す
RewriteEngine on RewriteRule ^(.+)?-(.+)?-(.+)?$ /rewrite.cgi?mode=$1&word=$2&page=$3 [L]
例2. Pathinfoを渡す
RewriteEngine on RewriteRule ^/(.*)$ /dispatch.cgi/$1 [L]
ベーシック認証
パスワード式のアクセス制限
AuthType Basic AuthName "パスワードを入力してね" AuthUserFile /home/.htpasswd パスワードを記述したファイルのパス require valid-user
ダイジェスト認証
パスワード式のアクセス制限
ベーシック認証よりも強固
AuthType Digest AuthName "パスワードを入力してね" AuthUserFile /home/.htpasswd パスワードを記述したファイルのパス require valid-user
.htaccessファイルを転送する
.htaccessの編集が終わったら、FFFTPでサーバに転送してください。 .htaccessを置いたディレクトリ及びその下のサブディレクトリ全てにその設定が反映されます。Apache側の設定
etc/httpd/conf/httpd.conf
httpd.confに直接書き込む方法は設定を一元管理できるというメリットがありますが、設定を反映させるためにサービスの再起動をしなくてはいけません。conf.d以下での個別設定を有効にする。 バーチャルドメインを用いて管理分散する場合に非常に有効な手段。 Include /etc/httpd/conf.d/*.conf
パスワード認証によるアクセス制限
linuxコマンドから認証ユーザーとパスワードを追加する。
オプションに-cをつけると新規作成。追加のときは-cはいらない。
ベーシック認証
$ htpasswd -c .passed user Enter Password: (パスワード入力) Retype Password: (再びパスワード入力) Adding...
ダイジェスト認証
$ htdigest -c .passed relm user Enter Password: Retype Password: Adding...