くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

.htaccessでやったことがあることをまとめてみた。

そもそも.htaccessとは

.htaccessとはapache上でサーバーの設定をいろいろ弄れるファイル。webサーバーにアクセスされた際に最初に読み込まれて動作を決定する

注意点

  1. コメントアウトは#で行う
  2. 最終行でしっかり改行を行う(.htaccessではリターンがあって初めて行と認識されるため)

 

特定のホストからのみアクセス可能にする

order deny,allow

deny from all #ここですべてからのアクセスを拒否しておいて

allow from xxx.xxx.xxx.xxx #ここで特定のIPからのみ許可をする

allow from xxx.xxx.xxx.xxx

 

特定のリファラからのみアクセス可能にする

SetEnvIf Referer "http://xxxxx.net/" sample1

order deny,allow

deny from all

allow from env=sample1

これは知らなかったですが、便利そう笑

この他にも特定のユーザーエージェント(firefoxとか)からのみアクセス可能にできたりするみたいです。

 

直リン拒否

SetEnvIf REFERER "自分のドメイン" ok 

order deny,allow

deny from all 

allow from env=ok

 

ダイレクト

例えば画像だけ別サーバーにあるみたいなときに便利

 

Redirect permanent /aaaa/image/ http://bbbb/image/

上の場合、/aaaa/image/ フォルダ内のファイルが読み込まれたら、http://bbbb/image

フォルダ内にアクセスしてファイルを取得してくるということ

 

エラーページ

エラーが起きたときに表示するファイルを指定できます

ErrorDocument 401 401.html #401エラーが起きたときは401.htmlを表示

 

ErrorDocument 403 403.html #403エラーが起きたときは403.htmlを表示

 

特定の拡張子に対する設定

.htaccessはデフォルトだと全ファイルに適用されてしまうので、たとえば.pngファイルにはアクセスできないようにするためには

<Files ~ "\.png$">

deny from all

 

</Files>

また、複数指定する場合は

<Files ~ "\.(png|mp3|jpg)$">

deny from all

 

</Files>

のように記述します

 

パスワード認証(ベーシック認証)

AuthUserFile フルパス/.htpasswd

AuthGroupFile /dev/null

AuthName "ほにゃらら"

AuthType Basic

require valid-user

<Files ~ "^.(htpasswd|htaccess)$">

deny from all

 

</Files>

 

1行目の「フルパス」の部分は「.htpasswd」の設置場所のサーバー上のフルパスが必要です。三行目のAuthNameの部分には認証ウィンドウを出したときに表示する文言なので自由に変更可能。.htpasswd(パスワードファイル)はhtpasswdコマンドで作成可能なので各自ググってください。

 

RewriteRuleも書こうと思ったのですが、長くなってしまったので別の記事として書きます笑