# Turn on server side include processing for the header inclusion.
AddOutputFilter INCLUDES .html
Options +Includes
Options +FollowSymLinks

# Make /foo.html available at /foo
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

# Turn on mod_pagespeed to optimize our docs.
ModPagespeed on
ModPagespeedRewriteLevel CoreFilters
ModPagespeedEnableFilters collapse_whitespace
ModPagespeedEnableFilters remove_comments
ModPagespeedInPlaceResourceOptimization on

# Do not optimize these resources which are used for blogpost
ModPagespeedDisallow */puzzle_optimized_to_low_quality_webp.webp
ModPagespeedDisallow */puzzle_optimized_to_low_quality_webp_and_saved_as_png.png
ModPagespeedDisallow */puzzle_original.jpg
