とあるフォーラムを見ていたら、「携帯以外弾くhtaccessを置いたら、CMSを管理する自分のPCもアクセス出来なくなった」という質問があった。
ふむどれどれhtaccessの練習でもしてみようと思い立ち
指定ip以外アクセスできないフォルダを作成する事にした。
しました。
terapadを立ち上げ以下を記述
全てのアクセスを拒否する
order deny,allow
deny from all
ここでIPアドレスを調べて
ip_addressのところをコピペ。
allow from xxx.xxx.xxx.xxx
htaccess.txtという名前で保存して
テスト用のフォルダhtaccessを作成し適当なindex.htmlをと一緒にアップし.htaccessにリネーム。
そしてhtaccessフォルダにアクセスしてみると500 Internal Server Error
あるぇ?
ほかのブラウザで見ても同じく500、アスキーモードで転送してるし何故でしょう?
試しにサーバーから削除するとちゃんとindex.htmlが表示される。
でもってまたアップするとInternal Server Error。
ipがダメなのかな?とホスト名にしてみたりxxx.xxx.xxx.だけにしてみたり
最後はhtaccessの中身を空白にしたものをサーバーにアップしてみても
500 Internal Server Error。
.htaccessをアップしただけで表示されなくなるって聞いたことないよ
favicon設置用にすでにアップしてあるhtaccessと何が違うのだか見比べてみる
そういえばoperaやIEでfaviconが表示されないんだ、パスの指定がいけないのかな?と修正してみる。
何に変更してもoperaはうちのサイトのfaviconを表示させる気はないようだ。
パスを元に戻したhtaccessを再度アップロードするとなんとsakurachiro.com全てに500 Internal Server Error が表示されるようになった。
あっるぇ?
“htaccess 500″で検索してみるとcodexにこんな投稿が
htaccess ファイルを置くと500 internal errorになります
htaccessを修正していない(コピーしただけ)ならこちらは問題ないとして、index.phpを保存する際の文字コードがUTF-8(ボムなし)で保存されているか
や
メモ帳ではなく、エディタで作業をしていたので大丈夫だと思っていました。
私はTerrapadで作業をしましたが、文字コードをUTF-8Nにて保存して、上書き保存することにより動作が確認できました。
ここ。
うちのterapadの文字コードもutf-8になってました、utf-8nにしてアップするとsakurachiro.com復活。
不思議なのは、文字コード指定再読込や文字/改行コード指定保存をしていないのに、何回か保存した後に文字コードが変わってしまったということ。
faviconのパスを書き換えてる時3回は保存しなおして、その都度ブラウザで確認しても表示できてたので最初の何回かは文字コードは変更されなかった事になる。
とりあえずそれはいいとして、最初に作った
order deny,allow
deny from all
allow flom xxx.xxx.xxx.xxx
を開くとutf-8になってました。
utf-8nに変更してhttp://sakurachiro.com/_exercise/htaccess/を確認すると表示できた!
そしてiPhoneで同じページにアクセスすると403 Forbidden
ん~成功した。
まとめ
- uft-8のBOMありなしを選べるテキストエディタなら BOMなし(utf-8n)を使おう、選べない場合は基本的にBOMなしらしいです。
- 最後の行に改行いれる
- アスキーモードで転送する