kevinmhoffman/sevenheadsdesign/master/.htaccess - Htaccess File

kevinmhoffman/sevenheadsdesign/master/.htaccess

# This .htaccess file is used to speed up this website
# See https://github.com/sergeychernyshev/.htaccess

# ----------------------------------------------------------------------
# Proper MIME type for all files
#
# Copied from the HTML5 boilerplate project's .htaccess file
# https://github.com/h5bp/html5-boilerplate/blob/master/.htaccess
# ----------------------------------------------------------------------

# JavaScript
#   Normalize to standard type (it's sniffed in IE anyways)
#   tools.ietf.org/html/rfc4329#section-7.2
AddType  application/javascript      js jsonp
AddType  application/json      json

# Audio
AddType  audio/ogg        oga ogg
AddType  audio/mp4        m4a f4a f4b

# Video
AddType  video/ogg        ogv
AddType  video/mp4        mp4 m4v f4v f4p
AddType  video/webm        webm
AddType  video/x-flv        flv

# SVG
#   Required for svg webfonts on iPad
#   twitter.com/FontSquirrel/status/14855840545
AddType    image/svg+xml      svg svgz
AddEncoding  gzip        svgz

# Webfonts
AddType application/vnd.ms-fontobject    eot
AddType application/x-font-ttf      ttf ttc
AddType font/opentype        otf
AddType application/x-font-woff      woff

# Assorted types
AddType  image/x-icon        ico
AddType  image/webp        webp
AddType  text/cache-manifest      appcache manifest
AddType  text/x-component      htc
AddType  application/xml        rss atom xml rdf
AddType  application/x-chrome-extension    crx
AddType  application/x-opera-extension    oex
AddType  application/x-xpinstall      xpi
AddType  application/octet-stream    safariextz
AddType  application/x-web-app-manifest+json  webapp
AddType  text/x-vcard        vcf
AddType  application/x-shockwave-flash    swf
AddType  text/vtt        vtt

# --------------------------------------------------------------------------------------
# Compression: http://code.google.com/speed/page-speed/docs/payload.html#GzipCompression
# --------------------------------------------------------------------------------------
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE application/atom+xml
  AddOutputFilterByType DEFLATE application/json
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/x-component
  AddOutputFilterByType DEFLATE text/xml
  
  # The following MIME types are in the process of registration
  AddOutputFilterByType DEFLATE application/xslt+xml
  AddOutputFilterByType DEFLATE image/svg+xml
  
  # The following MIME types are NOT registered
  AddOutputFilterByType DEFLATE application/mathml+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  
  # JavaScript has various MIME types
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE text/ecmascript
  AddOutputFilterByType DEFLATE text/javascript

  # .ico files and other compressible images
  AddOutputFilterByType DEFLATE image/vnd.microsoft.icon
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE image/bmp
  AddOutputFilterByType DEFLATE image/tiff
  AddOutputFilterByType DEFLATE application/pdf

  # compressible fonts (.woff is already compressed)
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
</IfModule>

# ----------------------------------------------------------------------
# Enabling filename rewriting (file.XXX.ext) if URL rewriting is enabled
# Otherwise URLs will use query strings (file.ext?v=XXX)
#
# More proxies cache assets if there is no query string
# ----------------------------------------------------------------------
<IfModule mod_rewrite.c>
  RewriteEngine On

  # Setting up an environment variable so your code can detect if mod_rewrite rules are executable
  # in this folder and you can use file.123.jpg or you need to fall back to file.jpg?123
  RewriteRule .          -  [E=URLVERSIONREWRITE:YES]

  # Rewrites a version in file.123.jpg as well as timestamped version file.123_m_12345123512354.jpg
  # to original file.jpg so you can use it instead of file.jpg?123 which isn't cached in some proxies.
  RewriteCond %{REQUEST_FILENAME}      !-f
  RewriteRule ^(.*).(d+)(_m_d+)?.([^.]+)$  $1.$4  [L,QSA]

  # Rewrites a version in file.ac123fe.jpg to original file.jpg
  # so you can use it instead of file.jpg?123 which isn't cached in some proxies.
  # Used for hash-based URLs where having a timestamp is not necessary.
  RewriteCond %{REQUEST_FILENAME}      !-f
  RewriteRule ^(.*).([a-zd]+).([^.]+)$  $1.$3  [L,QSA]
</IfModule>

# -------------------------------------------------------------------------------------------------
# Browser Caching: http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching
#
# Google recommends specifying the following for all cacheable resources:
#
#    1. Expires or Cache-Control max-age
#
#   Set Expires to a minimum of one month, and preferably up to one year, in the future. (We
#   prefer Expires over Cache-Control: max-age because it is is more widely supported.) Do not
#   set it to more than one year in the future, as that violates the RFC guidelines.
#
#    2. Last-Modified or ETag
#
#   Set the Last-Modified date to the last time the resource was changed. If the Last-Modified
#  date is sufficiently far enough in the past, chances are the browser won't refetch it. 
#
# Per Google: "it is redundant to specify both Expires and Cache-Control: max-age, or to specify
# both Last-Modified and ETag."
# --------------------------------------------------------------------------------------------------
<IfModule mod_expires.c>
  ExpiresActive On

  ExpiresByType application/json      "access plus 1 year"
  ExpiresByType application/pdf      "access plus 1 year"
  ExpiresByType application/x-shockwave-flash  "access plus 1 year"
  ExpiresByType image/bmp       "access plus 1 year"
  ExpiresByType image/gif       "access plus 1 year"
  ExpiresByType image/jpeg       "access plus 1 year"
  ExpiresByType image/png       "access plus 1 year"
  ExpiresByType image/svg+xml       "access plus 1 year"
  ExpiresByType image/tiff       "access plus 1 year"
  ExpiresByType image/vnd.microsoft.icon     "access plus 1 year"
    ExpiresByType image/x-icon      "access plus 1 year"
  ExpiresByType text/css         "access plus 1 year"
  ExpiresByType video/x-flv       "access plus 1 year"
  ExpiresByType application/vnd.bw-fontobject  "access plus 1 year"
  ExpiresByType application/x-font-ttf    "access plus 1 year"
  ExpiresByType application/font-woff    "access plus 1 year"
  ExpiresByType font/opentype      "access plus 1 year"
  ExpiresByType image/webp      "access plus 1 year"

  # The following MIME types are in the process of registration
  ExpiresByType application/xslt+xml    "access plus 1 year"
  ExpiresByType image/svg+xml      "access plus 1 year"

  # The following MIME types are NOT registered
  ExpiresByType application/mathml+xml    "access plus 1 year"
  ExpiresByType application/rss+xml    "access plus 1 year"

  # JavaScript has various MIME types
  ExpiresByType application/x-javascript     "access plus 1 year"
  ExpiresByType application/javascript     "access plus 1 year"
  ExpiresByType text/ecmascript       "access plus 1 year"
  ExpiresByType text/javascript       "access plus 1 year"
</IfModule>

# TODO: Set Last-Modified per Google's recommendation to complete browser caching

# -------------------------------------------------------------------------
# Disabling ETags as they are most likely misconfigured and
# do not add functionalit beyond Last-Modified
# -------------------------------------------------------------------------
<IfModule mod_headers.c>
  # Try removing etag headers (if it's coming from proxy for example)
  Header unset ETag
</IfModule>

# Remove ETags
FileETag None

RewriteEngine on
RewriteRule ^about$ /about.php [L]
RewriteRule ^/$ /index.php [L]
RewriteRule ^home$ /index.php [L]

On Github License

Files

Download PDF of Htaccess file
DEFLATE, REQUEST_FILENAME

Comments

Apache