インストール・動作環境設定.htaccess について
Apacheで.htaccessを使用する
unknown
Apache はデフォルトで、.htaccessの使用が禁止されています。 使えるようにするには、httpd.confのAllowOverrideの設定を、None→Allに変更します。 上書き保存後、Apacheを再起動(Restart)させると、設定が反映されます。
#This controls which options the .htaccess files in directories can
#override. Can also be "All", or any combination of "Options",
#"FileInfo",
#"AuthConfig", and "Limit"
AllowOverride All
ファイルを隠す
unknown
「.htaccess」、「.htpasswd」を隠す
<Files ~ "^\.(htaccess|htpasswd)$"> order allow,deny deny from all satisfy all </Files>
指定した拡張子のファイルを隠す
複数の拡張子を同時に指定できます。
下記の場合、拡張子が「.dat」、「.log」、「.csv」のファイルを隠します。
<Files ~ "\.(dat|log|csv)$"> deny from all </Files>
文字化け対策
unknown
HTTPヘッダー内で明示的に文字コードを指定。
AddType "text/html; charset=utf-8" .html
トップページの指定
unknown
URLをスラッシュで終わらせてアクセスすると、通常はそのディレクトリ内のindex.htmlが表示されます。 この設定を変えることで、他のファイルを表示させることが可能になります。
ただし、MIMEタイプで設定されていない拡張子のファイルを設定すると、 ファイルのダウンロードダイアログが表示されてしまうので注意!
指定したファイルは、左が一番優先度が高くなります。
例) DirectoryIndex index.html index.cgi index.php index.shtml 例) DirectoryIndex sample1.html sample2.html index.html
リダイレクト
unknown
リダイレクト先は別ドメインのサーバも指定可。
下記の例では、http://www.shtml.jp/test/
もしくはhttp://www.shtml.jp/test/basic.html
へアクセスがあると、http://www.shtml.jp/htaccess/basic.html
にリダイレクトされます。
例) Redirect permanent /test/ http://www.shtml.jp/htaccess
配布用ファイルがダウンロードできない場合
unknown
配布用ファイルの拡張子のMIMEタイプを.htaccessに設置すれば、解消できます。
#.exe 実行ファイルの配布用 AddType application/octet-stream exe #.lzh アーカイブの配布用 AddType application/octet-stream lzh #Macintosh .hqx 圧縮ファイルの配布用 AddType application/mac-binhex40 hqx #Flash コンテンツの公開用 AddType application/x-shockwave-flash swf #ZIP ファイルの配布用 AddType application/zip zip
特定のサーバのアクセスを許可/禁止
unknown
構文 | 説明 |
---|---|
allow from ホスト ホスト ... | allow ホストのディレクトリへのアクセス許可の設定。 |
deny from ホスト ホスト ... | deny ホストのディレクトリへのアクセス拒否を設定。 |
値 | 内容 |
---|---|
all | 全てのホストのアクセスを許可 |
ホスト名 | そのサブドメインに所属するホストのアクセスを許可(後方一致) |
IPアドレス | 指定したIPアドレスを持つホストのアクセスを許可(前方一致) |
ネットアドレス ネットマスク | IPアドレスの先頭の1~3バイト目までを指定してアクセスを制限 |
deny,allow
は半角スペースを空けないこと。
アクセスを許可する
# 指定したアクセスのみ許可 AuthUserFile /div/null AuthGroupFile /dev/null AuthType Basic <Limit POST GET PUT> order deny,allow # 拒否、一部許可 deny from all # とりあえず全て拒否 allow from tagindex.com # tagindex.comを許可 allow from .co.jp # .co.jpを許可 allow from localhost # 端末に直接つながったマシンからのアクセスを許可 </Limit>
アクセスを拒否する
# 指定したアクセスのみ拒否 AuthUserFile /div/null AuthGroupFile /dev/null AuthType Basic <Limit POST GET PUT> order allow,deny # 許可、一部拒否 allow from all # とりあえず全て許可 # サーバ名の区切りは半角スペース deny from .dmedia.co.jp .com .proxy .sankus.or.jp # .co.jpを拒否 deny from .co.jp # 123.123.で始まるアドレスを拒否 deny from 123.123. </Limit>
# 210.174.122.0からのアクセスのみ許可 AuthUserFile /div/null AuthGroupFile /dev/null AuthType Basic <Limit POST GET PUT> order deny,allow deny from all # allow from 210.174.122.0/16 と記述してもOK allow from 210.174.122.0/255.255.255.0 </Limit>
指定IPアドレスからのアクセスのみ許可
# 203.141.160.32及び210.142.24.49からのアクセスのみ許可
AuthUserFile /div/null
AuthGroupFile /dev/null
AuthType Basic
<Limit POST GET PUT>
order deny,allow
deny from all
allow from 203.141.160.32 210.142.24.49
</Limit>
複数のアクセス拒否・許可を設定
# yahoo.comとgoo.comからのアクセスを拒否
AuthUserFile /div/null
AuthGroupFile /dev/null
AuthType Basic
<Limit POST GET PUT>
SetEnvIf REFERER "yahoo.com" Ref1
SetEnvIf REFERER "goo.com" Ref2
order allow,deny
allow from all
deny from env=Ref1
deny from env=Ref2
</Limit>
CGIの使用を許可
unknown
# CGIを実行できる領域に設定 Options +ExecCGI # 拡張子が".cgi",".pl"の出力は、text/htmlのMIMEタイプを返す # 訪問者のブラウザは、.htmlを受け取った時と同様に".cgi"ファイルを扱う AddType text/html .cgi .pl # .cgiファイルをCGIスクリプトとみなしプログラウを実行するよう定義 AddHandler cgi-script .cgi .pl
SSIの使用を許可
unknown
.htmlにSSIを有効にした場合、全ての.htmlファイルがサーバによる解釈を受けるため、パフォーマンスが低下します。なるべく.html は無効のままにしておいた方がよさそうです。
# SSIを実行できる領域に設定 Options +Includes AddType text/html .shtml # 拡張子が".shtml"のファイルをSSIで有効にする AddHandler server-parsed .shtml
ファイルの一覧を非表示にする
unknown
# ファイルの一覧機能は有効になったまま表示ファイルパターンを指定する方法 # index.htmlの無いディレクトリでもディレクトリ一覧を表示しない IndexIgnore * # ファイル一覧機能自体を無効にする方法 # ブラウザでアクセスした際、403 Forbiddenと表示される Options -Indexes
パスワードによるアクセス制限
unknown
# パスワードファイル名(絶対パス) AuthUserFile /home/user/www/passwd/.htpasswd # グループアクセス制限なし AuthGroupFile /dev/null # Basic認証 AuthType Basic # "ACCESS PROTECE" AuthName "Please enter username and password" # POST,GET,PUTに対して制限をかける <Limit GET POST PUT> # testとユーザーに対してのみアクセス許可 require user test order allow,deny allow from all deny from .zzz.or.jp </Limit>
エラー発生時の転送先指定、自作エラードキュメント
unknown
デフォルトのエラー画面は、味気ないものです。 もっと分かりやすくシンプルに表示したい場合、以下の設定を変更すれば、エラー発生時に自作のエラードキュメントを表示することができます。 各エラー番号ごとに自作エラードキュメントへのパス、またはURLを指定します。 URLを指定した場合、エラー発生時に指定したURLへ転送されます。
エラー番号 | エラー文字列 | エラー内容 |
---|---|---|
400 | Bad Request | サーバーが理解できない要求をした場合。 |
401 | Unauthorized | ログイン画面などで、認証に失敗した場合。 |
403 | Access Forbidden | アクセスが許可されてない場合。 |
404 | Not Found | 指定したフォルダやファイルが存在しない場合。 |
500 | Internal Server Error | CGIの設定ミスなど、サーバー内部でエラーが発生した場合。 |
503 | Service Temporarily Unavailable | サーバーが高負荷状態でサービス利用が一時停止されている場合。同時に大量のアクセスが集中した時などに発生するエラー。後で、アクセスすれば問題ない。 |
IEのオプション設定で「HTTPエラーメッセージを簡易表示する」にしていると、 エラードキュメントのファイルサイズが512バイト未満の場合、デフォルトのエラードキュメントが表示されます。 そのため自作エラードキュメントは、ファイルサイズが512バイト以上になるように作成しましょう。
AuthUserFile /dev/null AuthGroupFile /dev/null AuthType Basic #エラードキュメントのパスを指定 Error Document 401 /error/401.html #エラー番号を引数で渡して、エラー番号によって表示する文字列などを #変更すれば1ページで済みます Error Document 403 /error/error.php?err=401 Error Document 403 /error/error.php?err=403 #転送先URL指定 Error Document 404 http://転送先URL <Limit POST GET PUT> </Limit>
.htaccessなしで自作エラードキュメントを表示させる裏技!
unknown
.htaccessの使用が許可されていないレンタルサーバなどの場合、URLをスラッシュ終わりでアクセスすると、ファイル一覧が表示されてしまいセキュリティ上良くありません。
「URLをスラッシュで終わらせてアクセスすると、通常はそのディレクトリ内のindex.htmlが表示される」というのを逆手に取り、 index.htmlというファイル名でエラードキュメントを作成し、index.htmlの無いフォルダにアップロードします。 URLをスラッシュで終わらせてアクセスすると、ディレクトリ内のファイル一覧が表示されなくなり、 自作のエラードキュメント(実はindex.html)が表示されるはずです!
動的URLを静的URLにする
unknown
PHPやCGIなど、動的URLのページを、静的URLでアクセス可能にするには、mod_rewriteを使用します。 正規表現パターンを自サイトのURLに合うようにします。
URLの後に引数1つある場合
http://localhost/test/pj_roomer/index.php?param=abc
↓
http://localhost/test/pj_roomer/index/abc.html
RewriteEngine on RewriteRule ^/test/pj_roomer/([0-9A-Za-z]+)\.html$ /test/pjroomer/index.php?param=$1
URLの後に引数3つある場合
http://localhost/test/pj_roomer/index.php?param1=abc¶m2=def¶m3=123
↓
http://localhost/test/pj_roomer/index/abc/def/123.html
RewriteEngine on RewriteRule ^/test/pj_roomer/([0-9A-Za-z]+)/([0-9A-Za-z)+)/([0-9A-Za-z)+)\.html$ /test/pjroomer/index.php?param1=$1¶m2=$2¶m3=$3
このように静的URLでアクセス可能にすることで、SEO対策に有効と言われています。 動的URLだと静的URLのページに比べ、新しいページしかインデックスされない傾向にあるようです。
当サイトは.htaccessが使用不可のため、トップページ以外は全て動的URLですが、YST、Googleのインデックス数は両方とも約70件。 総ページ数が約90ページなので8割方インデックスされていることになります。
一般的には静的URLの方がインデックスされやすいと言われていますが、どちらにしても、定期的にサイトを更新することがSEO対策として重要です。