Created
September 11, 2015 10:37
-
-
Save neo22s/b14f6a2c83f269e985ac to your computer and use it in GitHub Desktop.
.htaccess
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
# ---------------------------------------------------------------------- | |
# Better website experience for IE users | |
# ---------------------------------------------------------------------- | |
# Force the latest IE version, in various cases when it may fall back to IE7 mode | |
# github.com/rails/rails/commit/123eb25#commitcomment-118920 | |
# Use ChromeFrame if it's installed for a better experience for the poor IE folk | |
<IfModule mod_setenvif.c> | |
<IfModule mod_headers.c> | |
BrowserMatch MSIE ie | |
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie | |
</IfModule> | |
</IfModule> | |
<IfModule mod_headers.c> | |
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes), | |
# We need to inform proxies that content changes based on UA | |
Header append Vary User-Agent | |
# Cache control is set only if mod_headers is enabled, so that's unnecessary to declare | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# Bugs in some public proxies may lead to compressed versions of your resources being served to users that don't support compression. | |
# Specifying the Vary: Accept-Encoding header instructs the proxy to store both a compressed and uncompressed version of the resource. | |
# ---------------------------------------------------------------------- | |
<IfModule mod_headers.c> | |
<FilesMatch "\.(js|css|xml|gz)$"> | |
Header append Vary: Accept-Encoding | |
</FilesMatch> | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# Gzip compression | |
# ---------------------------------------------------------------------- | |
<IfModule mod_deflate.c> | |
# Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/ | |
<IfModule mod_setenvif.c> | |
<IfModule mod_headers.c> | |
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s,?\s(gzip|deflate)?|X{4,13}|~{4,13}|-{4,13})$ HAVE_Accept-Encoding | |
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding | |
</IfModule> | |
</IfModule> | |
# HTML, TXT, CSS, JavaScript, JSON, XML, HTC: | |
<IfModule filter_module> | |
FilterDeclare COMPRESS | |
#commented also for godaddy :( http://forums.open-classifieds.com/support/how-to-make-modrewrite-load-using-htaccess-file-on-open-classifieds-202.html#comment-981112189 | |
#FilterProvider COMPRESS DEFLATE resp=Content-Type /text/(html|css|javascript|plain|x(ml|-component))/ | |
#FilterProvider COMPRESS DEFLATE resp=Content-Type /application/(javascript|json|xml|x-javascript)/ | |
FilterChain COMPRESS | |
FilterProtocol COMPRESS change=yes;byteranges=no | |
</IfModule> | |
<IfModule !mod_filter.c> | |
# Legacy versions of Apache | |
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json | |
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript | |
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component | |
</IfModule> | |
# Webfonts and SVG: | |
<FilesMatch "\.(ttf|otf|eot|svg)$" > | |
SetOutputFilter DEFLATE | |
</FilesMatch> | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# Expires headers (for better cache control) | |
# ---------------------------------------------------------------------- | |
# These are pretty far-future expires headers. | |
# They assume you control versioning with cachebusting query params like | |
# <script src="application.js?20100608"> | |
# Additionally, consider that outdated proxies may miscache | |
# www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/ | |
# If you don't use filenames to version, lower the CSS and JS to something like | |
# "access plus 1 week" or so. | |
<IfModule mod_expires.c> | |
ExpiresActive on | |
# Perhaps better to whitelist expires rules? Perhaps. | |
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" | |
# RSS feed | |
ExpiresByType application/rss+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 1 month" | |
ExpiresByType image/png "access plus 1 month" | |
ExpiresByType image/jpg "access plus 1 month" | |
ExpiresByType image/jpeg "access plus 1 month" | |
ExpiresByType video/ogg "access plus 1 month" | |
ExpiresByType audio/ogg "access plus 1 month" | |
ExpiresByType video/mp4 "access plus 1 month" | |
ExpiresByType video/webm "access plus 1 month" | |
# HTC files (css3pie) | |
ExpiresByType text/x-component "access plus 1 month" | |
# Webfonts | |
ExpiresByType font/truetype "access plus 1 month" | |
ExpiresByType font/opentype "access plus 1 month" | |
ExpiresByType application/x-font-woff "access plus 1 month" | |
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" | |
ExpiresByType text/javascript "access plus 1 year" | |
<IfModule mod_headers.c> | |
Header append Cache-Control "public" | |
</IfModule> | |
</IfModule> | |
# Turn on URL rewriting | |
RewriteEngine On | |
# Installation directory | |
RewriteBase / | |
# Protect hidden files from being viewed | |
<Files .*> | |
Order Deny,Allow | |
Deny From All | |
</Files> | |
# Protect application and system files from being viewed, commented since problem with godaddy, see below | |
# RewriteRule ^(?:oc|languages|install)\b.* index.php/$0 [L] | |
RewriteRule ^(?:oc|languages|install)\b.* index.php [PT,QSA,L] | |
# Allow any existing files or directories to be displayed directly | |
RewriteCond %{REQUEST_FILENAME} !-f | |
# RewriteCond %{REQUEST_FILENAME} !-d | |
# Rewrite all other URLs to index.php/URL | |
# RewriteRule .* index.php/$0 [PT] | |
# godaddy hack no input file specified | |
RewriteRule .* index.php [PT,QSA,L] | |
# ---------------------------------------------------------------------- | |
# A little more security | |
# ---------------------------------------------------------------------- | |
# "-Indexes" will have Apache block users from browsing folders without a default document | |
# Usually you should leave this activated, because you shouldn't allow everybody to surf through | |
# every folder on your server (which includes rather private places like CMS system folders). | |
Options -Indexes | |
# Block access to "hidden" directories whose names begin with a period. This | |
# includes directories used by version control systems such as Subversion or Git. | |
<IfModule mod_rewrite.c> | |
RewriteRule "(^|/)\." - [F] | |
</IfModule> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment