ディフォールト.htaccess

提供:MDWiki
移動: 案内, 検索

目次

基本

以下の RewriteCond は、全て「拒否する条件」です。ごくごく普通の静的なファイルで公開するウェブサイトの場合は、クエリ文字列やどうでもいいメソッドは、あらかた拒否するのが望ましい。こんなことへの対応をプログラム側でやるのはバカげている。もし許されている場合、以下の設定はすべて httpd.conf かインクルードされる設定ファイルに書くべきであり、.htaccess も無効にしておくのがベターです。

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+ [OR]
  RewriteCond %{HTTP:Request-Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+ [OR]
  RewriteCond %{REQUEST_METHOD}  \
  ^(HEAD|TRACE|DELETE|TRACK|PROPFIND|OPTIONS|PROPPATCH|REPORT|MKACTIVITY|\
  CHECKOUT|PUT|MERGE|CONNECT|PATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|VERSION_CONTROL|\
  UNCHECKOUT|CHECKIN|UPDATE|LABEL|MKWORKSPACE|BASELINE_CONTROL|INVALID) [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
  RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
  RewriteCond %{QUERY_STRING}    ^.*(;|'|").*(union|select|insert|declare|drop|update|md5|benchmark).* [NC,OR]
  RewriteCond %{QUERY_STRING}    ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
  RewriteCond %{QUERY_STRING}    ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule .* - [F]
</IfModule>

会社からのアクセスだけに制限する

  Order Deny,Allow
  Deny from all
  Allow from ***.***.***.***/29

www なしを www ありに強制

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTP_HOST} ^(domain\.co\.jp)(:80)? [NC]
  RewriteRule ^(.*) http://www.somedomain.co.jp$1 [R=301,L]
</IfModule>

特定のファイルを防御

<Files .htaccess>
  Order Allow,Deny
  Deny from all
</Files>

SSLでの接続を強制

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

MarkupDancingで使っているもの

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+ [OR]
RewriteCond %{HTTP:Request-Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+ [OR]
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|PROPFIND|OPTIONS|PROPPATCH|REPORT|MKACTIVITY|CHECKOUT|PUT|MERGE|CONNECT|PATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|VERSION_CONTROL|UNCHECKOUT|CHECKIN|UPDATE|LABEL|MKWORKSPACE|BASELINE_CONTROL|INVALID) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(;|'|").*(union|select|insert|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(<|>|'|&|%0A|%0D|%27|%3C|%3E|%00).* [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* - [F]
RewriteCond %{HTTP_HOST} ^markupdancing\.net [NC,OR]
RewriteCond %{HTTP_HOST} ^crossedge\.net [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.crossedge\.net [NC,OR]
RewriteCond %{HTTP_HOST} ^philsci\.info [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.philsci\.info [NC,OR]
RewriteCond %{HTTP_HOST} ^takayukikawamoto\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.takayukikawamoto\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^markupdancing\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.markupdancing\.com
RewriteRule (.*) http://www.markupdancing.net/$1 [R=301]

リンク

個人用ツール
名前空間
変種
操作
案内
ツールボックス