Created
April 21, 2013 21:15
-
-
Save jcanfield/5431095 to your computer and use it in GitHub Desktop.
htaccess Boilerplate for Wordpress Sites. This is a combination of techniques that I have learned over the last few years as well as some snippets from the HTML5 Boilerplate. This ApacheConf file includes; proper UTF-8 encoding, ETag removal, Persistent connections, Proper www rewrite, website.com/login to wp-admin, 3 different GZIP compression …
This file contains 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
# Apache Configuration file | |
# www.lighthouselutherie.com/.htaccess | |
# Use UTF-8 encoding for anything served as `text/html` or `text/plain`. | |
AddDefaultCharset utf-8 | |
# Force UTF-8 for certain file formats. | |
<IfModule mod_mime.c> | |
AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml | |
</IfModule> | |
Options +FollowSymLinks | |
<IfModule mod_headers.c> | |
Header unset ETag | |
</IfModule> | |
FileETag None | |
# Persistent Connections | |
<IfModule mod_headers.c> | |
Header set Connection Keep-Alive | |
</IfModule> | |
#RewriteEngine On | |
#RewriteCond %{HTTP_HOST} !^www\. | |
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] | |
<IfModule mod_rewrite.c> | |
RewriteCond %{HTTPS} !=on | |
RewriteCond %{HTTP_HOST} !^www\..+$ [NC] | |
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] | |
</IfModule> | |
RedirectMatch 301 /login$ http://www.website.com/wp-admin | |
#Begin gzip and deflate | |
#<IfModule mod_deflate.c> | |
# AddOutputFilterByType DEFLATE text/html application/x-javascript text/plain text/xml image/x-icon | |
#</IfModule> | |
# | |
# GZIP Setup #2 | |
<ifmodule mod_deflate.c> | |
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x- javascript application/javascript | |
</ifmodule> | |
# | |
# GZIP Setup #3 | |
#<IfModule mod_deflate.c> | |
# <IfModule mod_setenvif.c> | |
# <IfModule mod_headers.c> | |
# SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding | |
# RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding | |
# </IfModule> | |
# </IfModule> | |
# <IfModule mod_filter.c> | |
# AddOutputFilterByType DEFLATE application/atom+xml \ | |
# application/javascript \ | |
# application/json \ | |
# application/rss+xml \ | |
# application/vnd.ms-fontobject \ | |
# application/x-font-ttf \ | |
# application/x-web-app-manifest+json \ | |
# application/xhtml+xml \ | |
# application/xml \ | |
# font/opentype \ | |
# image/svg+xml \ | |
# image/x-icon \ | |
# text/css \ | |
# text/html \ | |
# text/plain \ | |
# text/x-component \ | |
# text/xml | |
# </IfModule> | |
#</IfModule> | |
#SetEnv TZ America/Denver # Sets Timezone to Mountain | |
ExpiresActive On # Turn on Expires and set default to 0 | |
ExpiresDefault A0 | |
<IfModule mod_headers.c> | |
<FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff)$"> | |
Header set Access-Control-Allow-Origin "*" | |
</FilesMatch> | |
</IfModule> | |
# Proper MIME Types | |
<IfModule mod_mime.c> | |
# Audio | |
AddType audio/mp4 m4a f4a f4b | |
AddType audio/ogg oga ogg | |
# JavaScript | |
AddType application/javascript js jsonp | |
AddType application/json json | |
# Video | |
AddType video/mp4 mp4 m4v f4v f4p | |
AddType video/ogg ogv | |
AddType video/webm webm | |
AddType video/x-flv flv | |
# Web fonts | |
AddType application/font-woff woff | |
AddType application/vnd.ms-fontobject eot | |
AddType application/x-font-ttf ttc ttf | |
AddType font/opentype otf | |
AddType image/svg+xml svg svgz | |
AddEncoding gzip svgz | |
# Other | |
AddType application/octet-stream safariextz | |
AddType application/x-chrome-extension crx | |
AddType application/x-opera-extension oex | |
AddType application/x-shockwave-flash swf | |
AddType application/x-web-app-manifest+json webapp | |
AddType application/x-xpinstall xpi | |
AddType application/xml atom rdf rss xml | |
AddType image/webp webp | |
AddType image/x-icon ico | |
AddType text/cache-manifest appcache manifest | |
AddType text/vtt vtt | |
AddType text/x-component htc | |
AddType text/x-vcard vcf | |
</IfModule> | |
# Proper Expires | |
<IfModule mod_expires.c> | |
ExpiresActive on | |
ExpiresDefault "access plus 1 month" | |
# CSS | |
ExpiresByType text/css "access plus 1 year" | |
# Data interchange | |
ExpiresByType application/json "access plus 0 seconds" | |
ExpiresByType application/xml "access plus 0 seconds" | |
ExpiresByType text/xml "access plus 0 seconds" | |
# Favicon (cannot be renamed!) | |
ExpiresByType image/x-icon "access plus 1 week" | |
# HTML components (HTCs) | |
ExpiresByType text/x-component "access plus 1 month" | |
# HTML | |
ExpiresByType text/html "access plus 0 seconds" | |
# JavaScript | |
ExpiresByType application/javascript "access plus 1 year" | |
# Manifest files | |
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" | |
ExpiresByType text/cache-manifest "access plus 0 seconds" | |
# Media | |
ExpiresByType audio/ogg "access plus 1 month" | |
ExpiresByType image/gif "access plus 1 month" | |
ExpiresByType image/jpeg "access plus 1 month" | |
ExpiresByType image/png "access plus 1 month" | |
ExpiresByType video/mp4 "access plus 1 month" | |
ExpiresByType video/ogg "access plus 1 month" | |
ExpiresByType video/webm "access plus 1 month" | |
# Web feeds | |
ExpiresByType application/atom+xml "access plus 1 hour" | |
ExpiresByType application/rss+xml "access plus 1 hour" | |
# Web fonts | |
ExpiresByType application/font-woff "access plus 1 month" | |
ExpiresByType application/vnd.ms-fontobject "access plus 1 month" | |
ExpiresByType application/x-font-ttf "access plus 1 month" | |
ExpiresByType font/opentype "access plus 1 month" | |
ExpiresByType image/svg+xml "access plus 1 month" | |
</IfModule> | |
# BEGIN WPSuperCache | |
<IfModule mod_rewrite.c> | |
RewriteEngine On | |
RewriteBase / | |
#If you serve pages from behind a proxy you may want to change 'RewriteCond %{HTTPS} on' to something more sensible | |
AddDefaultCharset UTF-8 | |
RewriteCond %{REQUEST_URI} !^.*[^/]$ | |
RewriteCond %{REQUEST_URI} !^.*//.*$ | |
RewriteCond %{REQUEST_METHOD} !POST | |
RewriteCond %{QUERY_STRING} !.*=.* | |
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ | |
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC] | |
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC] | |
RewriteCond %{HTTP:Accept-Encoding} gzip | |
RewriteCond %{HTTPS} on | |
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz -f | |
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz" [L] | |
RewriteCond %{REQUEST_URI} !^.*[^/]$ | |
RewriteCond %{REQUEST_URI} !^.*//.*$ | |
RewriteCond %{REQUEST_METHOD} !POST | |
RewriteCond %{QUERY_STRING} !.*=.* | |
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ | |
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC] | |
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC] | |
RewriteCond %{HTTP:Accept-Encoding} gzip | |
RewriteCond %{HTTPS} !on | |
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html.gz -f | |
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html.gz" [L] | |
RewriteCond %{REQUEST_URI} !^.*[^/]$ | |
RewriteCond %{REQUEST_URI} !^.*//.*$ | |
RewriteCond %{REQUEST_METHOD} !POST | |
RewriteCond %{QUERY_STRING} !.*=.* | |
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ | |
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC] | |
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC] | |
RewriteCond %{HTTPS} on | |
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html -f | |
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html" [L] | |
RewriteCond %{REQUEST_URI} !^.*[^/]$ | |
RewriteCond %{REQUEST_URI} !^.*//.*$ | |
RewriteCond %{REQUEST_METHOD} !POST | |
RewriteCond %{QUERY_STRING} !.*=.* | |
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ | |
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC] | |
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC] | |
RewriteCond %{HTTPS} !on | |
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html -f | |
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html" [L] | |
</IfModule> | |
# END WPSuperCache | |
# BEGIN WordPress | |
<IfModule mod_rewrite.c> | |
RewriteRule ^index\.php$ - [L] | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteRule . /index.php [L] | |
</IfModule> | |
# END WordPress |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment