どんな場面でhtaccessを使うのか?
apcheのhttpd.confで、出来る物に関してはそちらで対応した方が良い。 運用上のリダイレクトや共用サーバーでconfファイルがいじれない場合などに利用する。
- リダイレクト処理
- アクセス制限
- URLの統一
などに使用する
前提条件
httpd.confファイルにて,AllowOverrideが有効になっている必要がある
<Directory />
~中略~
AllowOverride None
~中略~
</Directory>
<Directory "対象となるディレクトリ 例) /var/home/www">
~中略~
AllowOverride All
~中略~
</Directory>
リダイレクト処理について
シンボリックリンクを許可し、RewriteEngineをOnにする
.htaccessの
Options +SymLinksIfOwnerMatch
リダイレクト処理について
アクセスの制限と許可
htaccessへの直接のアクセスを制限
直接ブラウザなどから.htaccessにアクセスできないように制限する。
<Files ~ "^\.ht">
deny from all
</Files>
BASIC認証
別途 .htpasswdファイルが必要
ベーシック認証の暗号化形式にも注意 Password Formats
AuthTYpe Basic
AuthName "Input your ID and Password"
AuthUserFile /home/current/.htpasswd
AuthGroupFile /dev/null
Require valid-user
- AuthTYpe Basic
現行ダイジェスト認証に対応しているブラウザも多いため、そちらを利用するのも良い
AuthTYpe Digest
※ Digest認証だと、ユーザーIDとパスワードがハッシュ関数を用いて暗号化され解析されにくくなります。
- AuthGroupFile /dev/null グループ指定が無いという意味、グループを使用する場合は .htgroupファイルが必要 ※グループやRequire の記述で.htpasswdファイルは一つで 各ディレクトリ毎に.htaccessを用意して権限を分けやすくするというメリットはある。
<
p>参照
IP制限
BASIC認証、もしくはIP制限
Satisfy Anyがポイント
Basic認証の記述 + Satisfy Any + IP制限、許可 の順番で記述する。
AuthType Basic
AuthName "Input your ID and Password"
AuthUserFile /home/current/.htpasswd
AuthGroupFile /dev/null
Require valid-user
Satisfy Any
order allow,deny
allow from 100.100.100.100
細かくはこちらを参照
その他、細かなファイルや拡張子単位での制限
URLの統一
httpsに統一する
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
wwwありなしの統一
※ 前提条件として www.はサブドメイン