# .htaccess for Lil variation (株式会社リルバリエーション) # https://lil-variation.co.jp/ # ==================================== # 1. HTTPS強制リダイレクト(SSL対応) # ==================================== RewriteEngine On # HTTPSが有効でない場合、HTTPSにリダイレクト RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # ==================================== # 2. WWWあり/なしの統一(どちらか選択) # ==================================== # オプションA: wwwなしに統一する場合(推奨) RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] # オプションB: wwwありに統一する場合(上記をコメントアウトして以下を有効化) # # RewriteEngine On # RewriteCond %{HTTP_HOST} !^www\. [NC] # RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] # # ==================================== # 3. GZIP圧縮有効化(ページ読み込み高速化) # ==================================== # HTMLファイルを圧縮 AddOutputFilterByType DEFLATE text/html # CSSファイルを圧縮 AddOutputFilterByType DEFLATE text/css # JavaScriptファイルを圧縮 AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript # XMLファイルを圧縮 AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml # JSONファイルを圧縮 AddOutputFilterByType DEFLATE application/json # フォントファイルを圧縮 AddOutputFilterByType DEFLATE application/font-woff AddOutputFilterByType DEFLATE application/font-woff2 AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE font/otf # SVGファイルを圧縮 AddOutputFilterByType DEFLATE image/svg+xml # ==================================== # 4. ブラウザキャッシュ設定(パフォーマンス向上) # ==================================== ExpiresActive On # デフォルトのキャッシュ期間 ExpiresDefault "access plus 1 month" # HTML(短めに設定) ExpiresByType text/html "access plus 1 hour" # CSS ExpiresByType text/css "access plus 1 year" # JavaScript ExpiresByType application/javascript "access plus 1 year" ExpiresByType application/x-javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" # 画像ファイル ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/webp "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year" ExpiresByType image/x-icon "access plus 1 year" # フォントファイル ExpiresByType application/font-woff "access plus 1 year" ExpiresByType application/font-woff2 "access plus 1 year" ExpiresByType application/vnd.ms-fontobject "access plus 1 year" ExpiresByType font/opentype "access plus 1 year" ExpiresByType font/ttf "access plus 1 year" ExpiresByType font/otf "access plus 1 year" # PDF ExpiresByType application/pdf "access plus 1 month" # キャッシュコントロールヘッダー # 画像、CSS、JSのキャッシュ Header set Cache-Control "max-age=31536000, public" # HTMLのキャッシュ(短め) Header set Cache-Control "max-age=3600, public, must-revalidate" # ==================================== # 5. セキュリティ設定 # ==================================== # X-Frame-Options(クリックジャッキング対策) Header always set X-Frame-Options "SAMEORIGIN" # X-Content-Type-Options(MIMEタイプスニッフィング防止) Header always set X-Content-Type-Options "nosniff" # X-XSS-Protection(XSS攻撃対策) Header always set X-XSS-Protection "1; mode=block" # Referrer-Policy(リファラー情報の制御) Header always set Referrer-Policy "strict-origin-when-cross-origin" # Content-Security-Policy(コンテンツセキュリティポリシー) # 注意:厳しすぎる場合は調整してください # Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://fonts.googleapis.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data:; connect-src 'self';" # ディレクトリリスティングを無効化 Options -Indexes # サーバー情報の非表示 ServerSignature Off # ==================================== # 6. PHPセキュリティ設定 # ==================================== # エラー表示を無効化(本番環境) php_flag display_errors Off php_flag display_startup_errors Off # ファイルアップロードサイズ制限 php_value upload_max_filesize 10M php_value post_max_size 10M # 実行時間制限 php_value max_execution_time 300 php_value max_input_time 300 # メモリ制限 php_value memory_limit 256M # ==================================== # 7. 重要ファイルの保護 # ==================================== # .htaccessファイル自体へのアクセス拒否 Order allow,deny Deny from all # .gitファイルへのアクセス拒否 Order allow,deny Deny from all # 設定ファイルへのアクセス拒否 Order allow,deny Deny from all # バックアップファイルへのアクセス拒否 Order allow,deny Deny from all # ==================================== # 8. 文字エンコーディング設定 # ==================================== AddDefaultCharset UTF-8 AddCharset UTF-8 .html .css .js .xml .json .rss .atom # ==================================== # 9. カスタムエラーページ(オプション) # ==================================== # 403エラーページ(作成した場合に有効化) # ErrorDocument 403 /403.html # 500エラーページ(作成した場合に有効化) # ErrorDocument 500 /500.html # 403エラーページ(作成した場合に有効化) # ErrorDocument 403 /403.html # ==================================== # 10. モバイル対応 # ==================================== # モバイルフレンドリー設定 Header set Vary "User-Agent" # ==================================== # 11. クリーンURLの設定(オプション) # ==================================== # .htmlや.phpを省略できるようにする RewriteEngine On # .htmlを省略 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^\.]+)$ $1.html [NC,L] # .phpを省略 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^\.]+)$ $1.php [NC,L]