どんな場面で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を用意して権限を分けやすくするというメリットはある。
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.はサブドメイン
番外 FTPのIPアクセス制限(.ftpaccess)
- [FTP接続制御!IPアドレスによるアクセス制限設定をする方法](https://www.nkshopping.biz/index.php?
FTP%E6%8E%A5%E7%B6%9A%E5%88%B6%E5%BE%A1%EF%BC%81IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%88%B6%E9%99%90%E8%A8%AD%E5%AE%9A%E3%82%92%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)