サーバー運用をしていて、apache.confに書いてスマートに運用できると一番いいのだが、単一サービスだけを行っているサーバーであれば、問題ないが、.htaccessファイルでディレクトリ単位の管理が行えるのは非常に便利で柔軟性が高い。
デメリットとしては、高負荷の際には、上限値がサーバー制限値よりも下回ってしまうので、低めの閾値で管理することをおすすめする。
いきなりサイト管理者から、「Basic認証かけてよ。」とか言われた時ように、メモっておきます。
Sample
パスワード認証(Basic認証)
「.htpasswd」ファイルを作成。暗号化されたパスワードを記述して任意の場所に設置
# .htaccess [.htpasswdはroot階層からのpathを記述]
deny from all
AuthUserFile /home/hoge/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
# .htpasswd [guest,hogeの2つのユーザーを登録]
guest:3/H1Ec7SRPVQA
hoge:$apr1$dTCYavDQ$i75ufSwLF/yH0v5m/l0ZL0
アクセス制限
# 「1.1.1.1」「2.2.2.*」「example.com」からのアクセスを禁止する
order allow,deny
allow from all
deny from 1.1.1.1
deny from 2.2.2.
deny from example.com
#リファラで判別して禁止する(example.com以外のリファラを禁止)
SetEnvIf Referer "://www\.example\.com" ok_url
# UA判別して禁止する(IE以外を禁止)
SetEnvIf User-Agent "MSIE" ok_ua
order deny,allow
deny from all
allow from env=ok_ua
# robot-searchを制限する(hoge-bot.comからのアクセスを禁止)
SetEnvIf User-Agent "hoge-bot.com" ng_ua
order allow,deny
allow from all
deny from env=ng_ua
# 特定のファイルをアクセス不可にする(例はjsonファイル)
Deny from all
# 特定のファイルをアクセス不可且つ、特定のアクセスのみ許容する
Order allow,deny
Allow from 192.168.1.1/24
Deny from all
リダイレクト
# サイト全体のリダイレクト
RedirectMatch 301 .* http://example.com/
# ルート階層のリダイレクト
Redirect permanent / http://example.com/
# ディレクトリ単位のリダイレクト
Redirect permanent /hoge/ http://example.com/hoge/
# スマホなどのUA判別
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^mobile/.*$
RewriteCond %{HTTP_USER_AGENT} iPhone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} iPod [NC,OR]
RewriteCond %{HTTP_USER_AGENT} BlackBerry [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Android.*Mobile [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Windows\ Phone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Windows\ CE [NC]
RewriteCond %{HTTP_USER_AGENT} !iPad [NC]
RewriteRule ^(.*)$ mobile/$1 [R,L]
ファイル一覧表示の設定
# 禁止
Options -Indexes
# 許可
Options Indexes
Errorページの表示設定
# 401 [パスワード認証エラー]
ErrorDocument 401 /error/401.html
# 403 [権限エラー]
ErrorDocument 403 /error/403.html
# 404 [File not found]
ErrorDocument 404 /error/404.html
# 500 [CGIプログラムエラー]
ErrorDocument 500 /error/500.html
#Caution
別セグメントディレクトリに設置しないと、飛んだ先で同一のエラーが出ていた場合は、無限ループになる可能性があるので、要注意!
デフォルトページの設定
# 複数登録でき、優先順位をつけられる
DirectoryIndex index.php index.html hoge.html
Site
http://htaccess.cman.jp/
0 件のコメント:
コメントを投稿