Skip to content
Home » WordPress .htaccess

WordPress .htaccess

Enable Modules

apache2ctl -M sudo a2enmod rewrite ssl security2 deflate expires headers sudo a2enmod mpm_prefork apache2ctl -M

HTTP to HTTPS redirection of within site links

# Add to TOP # BEGIN rlrssslReallySimpleSSL rsssl_version[3.3] <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] </IfModule> # END rlrssslReallySimpleSSL
Code language: PHP (php)


ensure that the deflate, headers and expires modules are enabled

apache2ctl -M sudo a2enmod deflate sudo a2enmod expires sudo service apache restart sudo nano /var/www/html/wordpress/.htaccess ## BEGIN : Enable GZIP Compression (compress text, html, javascript, css, xml and so on) ## AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp AddOutputFilterByType DEFLATE image/svg+xml SetOutputFilter DEFLATE ## END : Enable GZIP Compression ## # Compress compressible fonts # only uncomment if you dont have compression turned on already. Otherwise it will cause all other filestypes not to get compressed # AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-opentype image/svg+xml # Fonts # Add correct content-type for fonts AddType application/ .eot AddType application/x-font-ttf .ttf AddType application/x-font-opentype .otf AddType application/x-font-woff .woff AddType image/svg+xml .svg ## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType image/svg "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType application/javascript "access 1 month" ExpiresByType application/x-javascript "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresByType application/ "access plus 1 year" ExpiresByType application/x-font-ttf "access plus 1 year" ExpiresByType application/x-font-opentype "access plus 1 year" ExpiresByType application/x-font-woff "access plus 1 year" ExpiresDefault "access plus 2 days" </IfModule> ## EXPIRES CACHING ## ## CACHE CONTOL HEADERS ## <IfModule mod_headers.c> <filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|svg|js|css|swf)$"> Header set Cache-Control "max-age=84600, public" </filesMatch> </IfModule>
Code language: PHP (php)

Apache Settings for speed

curl -sL | sudo perl
Code language: JavaScript (javascript)

Other .htaccess settings

# Crawlers and Hot Linking RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)? [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)? [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)? [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)? [NC] RewriteRule \.(jpg|jpeg|png|gif|svg)$ [NC,R,L] # TLS <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" </IfModule>
Code language: PHP (php)