# Add mime type for *.ico files...
AddType image/vnd.microsoft.icon .ico

# Redirect "democlient.html" to the new place...
Redirect permanent /democlient.html http://cppcheck.sourceforge.net/demo/

# Redirect "devinfo.html" to the new place...
Redirect permanent /devinfo.html http://cppcheck.sourceforge.net/devinfo/

# Redirect doxyoutput, coverage- and cpd report to the new place...
Redirect permanent /doxyoutput/ http://cppcheck.sourceforge.net/devinfo/doxyoutput/
Redirect permanent /doxygen-errors.txt http://cppcheck.sourceforge.net/devinfo/doxygen-errors.txt
Redirect permanent /coverage_report/ http://cppcheck.sourceforge.net/devinfo/coverage_report/
Redirect permanent /cpd.txt http://cppcheck.sourceforge.net/devinfo/cpd.txt

# ----------------------------------------------------------------------
# ETag removal
# ----------------------------------------------------------------------

# FileETag None is not enough for every server.
<IfModule mod_headers.c>
  Header unset ETag
</IfModule>

# Since we're sending far-future expires, we don't need ETags for static content.
# developer.yahoo.com/performance/rules.html#etags
FileETag None


# ----------------------------------------------------------------------
# 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*)+|[X~-]{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
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/atom+xml
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/javascript
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/json
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/rss+xml
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/vnd.ms-fontobject
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/x-font-ttf
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xhtml+xml
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/x-javascript
    FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xml
    FilterProvider COMPRESS DEFLATE resp=Content-Type $font/opentype
    FilterProvider COMPRESS DEFLATE resp=Content-Type $image/svg+xml
    FilterProvider COMPRESS DEFLATE resp=Content-Type $image/vnd.microsoft.icon
    FilterProvider COMPRESS DEFLATE resp=Content-Type $image/x-icon
    FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css
    FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html
    FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain
    FilterProvider COMPRESS DEFLATE resp=Content-Type $text/x-component
    FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml
    FilterChain    COMPRESS
    FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
  </IfModule>

  <IfModule !mod_filter.c>
    # Legacy versions of Apache
    AddOutputFilterByType DEFLATE application/atom+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
    AddOutputFilterByType DEFLATE application/x-font-ttf
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE font/opentype
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE image/x-icon
    AddOutputFilterByType DEFLATE image/vnd.microsoft.icon
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/x-component
    AddOutputFilterByType DEFLATE text/xml
  </IfModule>

</IfModule>

# ----------------------------------------------------------------------
# Expires headers (for better cache control)
# ----------------------------------------------------------------------

# These are pretty far-future expires headers.
# They assume you control versioning with filename-based cache busting
# 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"

  # Feed
  ExpiresByType application/rss+xml       "access plus 1 hour"
  ExpiresByType application/atom+xml      "access plus 1 hour"

  # Favicon (cannot be renamed)
  ExpiresByType image/x-icon              "access plus 1 week"
  ExpiresByType image/vnd.microsoft.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/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 application/x-font-ttf    "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 week"
  ExpiresByType application/javascript    "access plus 1 week"
  ExpiresByType application/x-javascript  "access plus 1 week"

</IfModule>