- ベストアンサー
.htaccess indexのアクセス制限について
/public_html/直下のindex.html等にアクセス制限をしつつ、403エラーを404エラーとして返す方法はありませんか? 現状403を404と返すためのエラードキュメント(/public_html/error/hoge.php)自体にもアクセス制限がかかっているため結局403エラーを返してしまうといったことになってます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ご希望通りになるかどうか判りませんが FilesMatchだとfile名でマッチするものだけを制限できます サンプル: ErrorDocument 403 /error/hoge.php <FilesMatch "\.(s?html?|gif|jpe?g|png)$"> Order allow,deny Deny from all </FilesMatch> ##以上のサンプルでは .shtml .html .htm と画像を制限しています 参考URL: http://httpd.apache.org/docs/2.0/ja/mod/core.html#files 但し、Multiviewsを使っている場合は 意図した動作に成らないことが有るらしいので FilesMatch や Filesで制限する場合は Multiviewsは使わない方が吉かもです。
その他の回答 (1)
- safle
- ベストアンサー率55% (121/217)
ディレクトリーの属性変更できる権限がないと 結論としては無理かと FFFTP(FTPソフト)とかでディレクトリの属性を755にして メモ帳かなんかで空内容のindex.htmlを/public_html/直下に 置けば可能です。
補足
回答ありがとうございます。 説明不足だったので補足しておきます。 indexのアクセス制限は特定の条件で制限をしていて、それ以外は普通にに教示させたいと思ってます。 .htaccessの内容は以下のような感じです。 #特定ホストのアクセス制限とか order allow,deny allow from all deny from 123.45.67.89 #403を404で返す ErrorDocument 403 /error/hoge.php ファイルの設置場所とか public_html / index.html .htaccess
お礼
回答ありがとうございます。 サンプルを拝借させていただいて、特定のファイルに制限をかける…という部分にヒントをいただき、逆の発想でerrorフォルダに全てのアクセスを許可する.htaccessを置けばいいことに気付きました。 hoge.phpを置いているerrorフォルダに allow from all とかいた.htaccessを置くことで無事解決しました。 すごく簡単なことに気付かなかったのが恥ずかしいです。 ありがとうございました。