Last active
December 7, 2024 10:50
-
-
Save Arifursdev/75f2497612c9d8c1da63b91ced6c2cc8 to your computer and use it in GitHub Desktop.
.htaccess for WordPress Speed Optimization
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Directory access disable | |
<IfModule mod_autoindex.c> | |
Options -Indexes | |
</IfModule> | |
# Custom HTTP headers for specific file types. | |
<IfModule mod_alias.c> | |
<FilesMatch "\.(html|htm|rtf|rtx|txt|xsd|xsl|xml)$"> | |
<IfModule mod_headers.c> | |
Header set X-Powered-By "WordPress/Adev" | |
Header unset Pragma | |
Header append Cache-Control "public" | |
Header unset Last-Modified | |
</IfModule> | |
</FilesMatch> | |
<FilesMatch "\.(css|htc|js|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$"> | |
<IfModule mod_headers.c> | |
Header unset Pragma | |
Header append Cache-Control "public" | |
</IfModule> | |
</FilesMatch> | |
</IfModule> | |
# FileETag None is not enough for every server. | |
<IfModule mod_headers.c> | |
Header unset ETag | |
</IfModule> | |
# Since we’re sending far-future expires, we don’t need ETags for static content. | |
# developer.yahoo.com/performance/rules.html#etags | |
FileETag None | |
# These configurations ensure that the server correctly identifies and serves AVIF images with the appropriate MIME types. | |
<IfModule mod_mime.c> | |
AddType image/avif avif | |
AddType image/avif-sequence avifs | |
</IfModule> | |
<IfModule mod_expires.c> | |
ExpiresActive on | |
ExpiresDefault "access plus 1 month" | |
# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5) | |
ExpiresByType text/cache-manifest "access plus 0 seconds" | |
# Your document html | |
ExpiresByType text/html "access plus 0 seconds" | |
# Data | |
ExpiresByType text/xml "access plus 0 seconds" | |
ExpiresByType application/xml "access plus 0 seconds" | |
ExpiresByType application/json "access plus 0 seconds" | |
# Feed | |
ExpiresByType application/rss+xml "access plus 1 hour" | |
ExpiresByType application/atom+xml "access plus 1 hour" | |
# Favicon (cannot be renamed) | |
ExpiresByType image/x-icon "access plus 1 week" | |
# Media: images, video, audio | |
ExpiresByType image/gif "access plus 4 months" | |
ExpiresByType image/png "access plus 4 months" | |
ExpiresByType image/jpeg "access plus 4 months" | |
ExpiresByType image/webp "access plus 4 months" | |
ExpiresByType video/ogg "access plus 4 months" | |
ExpiresByType audio/ogg "access plus 4 months" | |
ExpiresByType video/mp4 "access plus 4 months" | |
ExpiresByType video/webm "access plus 4 months" | |
ExpiresByType image/avif "access plus 4 months" | |
ExpiresByType image/avif-sequence "access plus 4 months" | |
# HTC files (css3pie) | |
ExpiresByType text/x-component "access plus 1 month" | |
# Webfonts | |
ExpiresByType font/ttf "access plus 4 months" | |
ExpiresByType font/otf "access plus 4 months" | |
ExpiresByType font/woff "access plus 4 months" | |
ExpiresByType font/woff2 "access plus 4 months" | |
ExpiresByType image/svg+xml "access plus 1 month" | |
ExpiresByType application/vnd.ms-fontobject "access plus 1 month" | |
# CSS and JavaScript | |
ExpiresByType text/css "access plus 1 year" | |
ExpiresByType application/javascript "access plus 1 year" | |
</IfModule> | |
# It uses the mod_headers module to set Cache-Control headers based on file extensions | |
<IfModule mod_headers.c> | |
<filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$"> | |
Header set Cache-Control "max-age=2678400, public" | |
</filesmatch> | |
<filesmatch "\.(html|htm)$"> | |
Header set Cache-Control "max-age=7200, private, must-revalidate" | |
</filesmatch> | |
<filesmatch "\.(pdf)$"> | |
Header set Cache-Control "max-age=86400, public" | |
</filesmatch> | |
<filesmatch "\.(js)$"> | |
Header set Cache-Control "max-age=2678400, private" | |
</filesmatch> | |
</IfModule> | |
# Gzip compression helps to reduce the size of the files sent from the server to the client, improving load times and reducing bandwidth usage. | |
<IfModule mod_deflate.c> | |
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json | |
</IfModule> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment