.htaccess のスニペット集
このページは、.htaccess のスニペットをまとめる予定のページです。
目次
注意
- コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。
セキュリティ関連ヘッダの追加
※ Apache に mod_headers モジュールが導入されている必要があります。
# フレームでの読み込みを同じサイト(同じオリジン)のみに制限
Header set X-Frame-Options SAMEORIGIN
# ブラウザにContent-Typeの推測をさせない
Header set X-Content-Type-Options nosniff
# XSSフィルタ
Header set X-XSS-Protection "1; mode=block"
キャッシュを有効化する
※ Apache に mod_expires モジュールが導入されている必要があります。
# ブラウザキャッシュの設定 (1週間)
ExpiresActive On
ExpiresDefault "access plus 1 week"
- ファイル (MIMEタイプ) ごとに設定したい場合は
ExpiresByType text/html "access plus 1 week"
などで設定ができます。
キャッシュを無効化する
※ Apache に mod_headers モジュールが導入されている必要があります。
Header set Cache-Control no-store
.css, .js のみキャッシュを無効化
<Files ~ "\.(css|js)$">
Header set Cache-Control no-store
</Files>
gzip圧縮
※ Apache に mod_deflate モジュールが導入されている必要があります。
# gzip圧縮の設定
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
- 画像以外のすべてのファイルを圧縮します。(mod_deflate の設定の例から古い設定を除いたものです)
アクセス制限
.htaccess, .htpasswd のアクセス制限
<Files ~ "^\.(htaccess|htpasswd)$">
Deny from all
</Files>
メンテナンス表示
※ /path/to/maintenance.html
の箇所は実際のメンテナンス用のページのパスに置き換えてください。
Basic認証
※ /path/to/.htpasswd
の箇所は実際の .htpasswd の場所を指定してください。
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user
wp-login.php のみBasic認証
<Files wp-login.php>
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user
</Files>
URLの調整
※ Apache に mod_rewrite モジュールが導入されている必要があります。
www なしの URL を www 付きに変更する
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(?!www).
RewriteRule .* http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
www 付きの URL を www なしに変更する
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule .* http://example.com%{REQUEST_URI} [R=301,L]
※ example.com
の部分は実際に使用するドメインに変更してください。
http の URL を https に変更する
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
利用言語 (Accept-Language) を見て英語サイトにリダイレクトする
RewriteEngine On
RewriteCond %{HTTP:Accept-Language} !^ja [NC]
RewriteRule ^$ /english/ [R=301,L]
- 言語設定が日本語以外の場合 (日本語を最優先にしていない場合)、
/
へのアクセスを/english/
にリダイレクトします。(ドキュメントルートの .htaccess 用の設定)
環境変数の設定
HTTP_AUTHORIZATION
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
HTTP_CONTENT_TYPE
RewriteEngine On
RewriteCond %{HTTP:Content-Type} .
RewriteRule .* - [E=HTTP_CONTENT_TYPE:%{HTTP:Content-Type}]