Created
September 18, 2013 14:17
-
-
Save tegansnyder/6609792 to your computer and use it in GitHub Desktop.
Example .htaccess file with proper expiry headers set for google page speed test. Everything else is commented out and merged into the httpd.conf file for speed see: https://gist.github.com/tegansnyder/6609688
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
############################################ | |
## uncomment these lines for CGI mode | |
## make sure to specify the correct cgi php binary file name | |
## it might be /cgi-bin/php-cgi | |
# Action php5-cgi /cgi-bin/php5-cgi | |
# AddHandler php5-cgi .php | |
DirectoryIndex index.php | |
<IfModule mod_php5.c> | |
php_value memory_limit 512M | |
php_value max_execution_time 7200 | |
php_flag magic_quotes_gpc off | |
php_flag session.auto_start off | |
#php_flag zlib.output_compression on | |
php_flag suhosin.session.cryptua off | |
php_flag zend.ze1_compatibility_mode Off | |
</IfModule> | |
<IfModule mod_security.c> | |
SecFilterEngine Off | |
SecFilterScanPOST Off | |
</IfModule> | |
<IfModule mod_deflate.c> | |
############################################ | |
## enable apache served files compression | |
## http://developer.yahoo.com/performance/rules.html#gzip | |
# Insert filter on all content | |
SetOutputFilter DEFLATE | |
# Insert filter on selected content types only | |
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript | |
# Netscape 4.x has some problems... | |
BrowserMatch ^Mozilla/4 gzip-only-text/html | |
# Netscape 4.06-4.08 have some more problems | |
BrowserMatch ^Mozilla/4\.0[678] no-gzip | |
# MSIE masquerades as Netscape, but it is fine | |
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html | |
# Don't compress images | |
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary | |
# Make sure proxies don't deliver the wrong content | |
Header append Vary User-Agent env=!dont-vary | |
</IfModule> | |
<IfModule mod_ssl.c> | |
############################################ | |
## make HTTPS env vars available for CGI mode | |
SSLOptions StdEnvVars | |
</IfModule> | |
<IfModule mod_rewrite.c> | |
############################################ | |
## enable rewrites | |
Options +FollowSymLinks | |
RewriteEngine on | |
############################################ | |
## rewrite API2 calls to api.php (by now it is REST only) | |
RewriteRule ^api/rest api.php?type=rest [QSA,L] | |
############################################ | |
## workaround for HTTP authorization | |
## in CGI environment | |
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] | |
############################################ | |
## TRACE and TRACK HTTP methods disabled to prevent XSS attacks | |
RewriteCond %{REQUEST_METHOD} ^TRAC[EK] | |
RewriteRule .* - [L,R=405] | |
############################################ | |
## redirect for mobile user agents | |
#RewriteCond %{REQUEST_URI} !^/mobiledirectoryhere/.*$ | |
#RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC] | |
#RewriteRule ^(.*)$ /mobiledirectoryhere/ [L,R=302] | |
############################################ | |
## always send 404 on missing files in these folders | |
RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ | |
############################################ | |
## never rewrite for existing files, directories and links | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteCond %{REQUEST_FILENAME} !-l | |
############################################ | |
## rewrite everything else to index.php | |
RewriteRule .* index.php [L] | |
</IfModule> | |
############################################ | |
## Prevent character encoding issues from server overrides | |
## If you still have problems, use the second line instead | |
AddDefaultCharset Off | |
#AddDefaultCharset UTF-8 | |
<IfModule expires_module> | |
############################################ | |
## Add default Expires header | |
## http://developer.yahoo.com/performance/rules.html#expires | |
# ExpiresDefault "access plus 1 year" | |
ExpiresActive On | |
ExpiresByType image/jpg "access plus 1 month" | |
ExpiresByType image/jpeg "access plus 1 month" | |
ExpiresByType image/gif "access plus 1 month" | |
ExpiresByType image/png "access plus 1 month" | |
ExpiresByType text/css "access plus 1 week" | |
ExpiresByType application/pdf "access plus 1 month" | |
ExpiresByType text/x-javascript "access plus 1 week" | |
ExpiresByType application/x-shockwave-flash "access plus 1 year" | |
ExpiresByType image/x-icon "access plus 1 year" | |
</IfModule> | |
############################################ | |
## By default allow all access | |
Order allow,deny | |
Allow from all | |
########################################### | |
## Deny access to release notes to prevent disclosure of the installed Magento version | |
<Files RELEASE_NOTES.txt> | |
order allow,deny | |
deny from all | |
</Files> | |
############################################ | |
## If running in cluster environment, uncomment this | |
## http://developer.yahoo.com/performance/rules.html#etags | |
FileETag none | |
#php_value upload_max_filesize 5M | |
#php_value post_max_size 10M |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment