# ---------------------------------------------------------------------- # Enable Google mod_pagespeed filters to improve page loading time # ---------------------------------------------------------------------- ModPagespeed on ModPagespeedEnableFilters extend_cache,collapse_whitespace,move_css_to_head,remove_comments # ---------------------------------------------------------------------- # 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 Header set X-UA-Compatible "IE=Edge,chrome=1" # mod_headers can't match by content-type, but we don't want to send this header on *everything*... Header unset X-UA-Compatible # ------------------------------------------------------------------------------ # | Compression | # ------------------------------------------------------------------------------ # Force compression for mangled headers. # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping 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 # Compress all output labeled with one of the following MIME-types # (for Apache versions below 2.3.7, you don't need to enable `mod_filter` # and can remove the `` and `` lines # as `AddOutputFilterByType` is still in the core directives). AddOutputFilterByType DEFLATE application/atom+xml \ application/javascript \ application/json \ application/ld+json \ application/rss+xml \ application/vnd.ms-fontobject \ application/x-font-ttf \ application/x-web-app-manifest+json \ application/xhtml+xml \ application/xml \ font/opentype \ image/svg+xml \ image/x-icon \ text/css \ text/html \ text/plain \ text/x-component \ text/xml # ------------------------------------------------------------------------------ # | Expires headers | # ------------------------------------------------------------------------------ # The following expires headers are set pretty far in the future. If you # don't control versioning with filename-based cache busting, consider # lowering the cache time for resources such as style sheets and JavaScript # files to something like one week. ExpiresActive on ExpiresDefault "access plus 1 week" # CSS ExpiresByType text/css "access plus 1 week" # Data interchange ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/ld+json "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" # Favicon (cannot be renamed!) and cursor images ExpiresByType image/x-icon "access plus 1 week" # HTML components (HTCs) ExpiresByType text/x-component "access plus 1 week" # HTML ExpiresByType text/html "access plus 0 seconds" # JavaScript ExpiresByType application/javascript "access plus 1 week" # Manifest files ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" ExpiresByType text/cache-manifest "access plus 0 seconds" # Media ExpiresByType audio/ogg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType video/webm "access plus 1 month" # Web feeds ExpiresByType application/atom+xml "access plus 1 hour" ExpiresByType application/rss+xml "access plus 1 hour" # Web fonts ExpiresByType application/font-woff "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType application/x-font-ttf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" # ---------------------------------------------------------------------- # Start rewrite engine # ---------------------------------------------------------------------- # Turning on the rewrite engine is necessary for the following rules and # features. FollowSymLinks must be enabled for this to work. # Some cloud hosting services require RewriteBase to be set: goo.gl/HOcPN # If using the h5bp in a subdirectory, use `RewriteBase /foo` instead where # 'foo' is your directory. # If your web host doesn't allow the FollowSymlinks option, you may need to # comment it out and use `Options +SymLinksIfOwnerMatch`, but be aware of the # performance impact: http://goo.gl/Mluzd Options +FollowSymlinks # Options +SymLinksIfOwnerMatch RewriteEngine On # RewriteBase / # ---------------------------------------------------------------------- # Block fake traffic # ---------------------------------------------------------------------- # Block all http and https referrals from "savetubevideo.com" and all subdomains of "savetubevideo.com" RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*savetubevideo\.com\ [NC,OR] # Block all http and https referrals from "srecorder.com" and all subdomains of "srecorder.com" RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*srecorder\.com\ [NC,OR] # Block all http and https referrals from semalt.com" and all subdomains of "semalt.com" RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*semalt\.com\ [NC,OR] # Block all http and https referrals from "kambasoft.com" and all subdomains of "kambasoft.com" RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*kambasoft\.com\ [NC,OR] # Block all http and https referrals from "buttons-for-website.com" and all subdomains of "buttons-for-website.com" RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*buttons-for-website\.com\ [NC,OR] # Block all http and https referrals from "social-buttons.com" and all subdomains of "social-buttons.com" RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*social-buttons\.com\ [NC,OR] # Block all http and https referrals from "4webmasters.org" and all subdomains of "4webmasters.org" RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*4webmasters\.org\ [NC,OR] # Send them to nowhere RewriteRule .* - [F,L] SetEnvIfNoCase Referer semalt spammer=yes SetEnvIfNoCase Referer semalt.com spammer=yes SetEnvIfNoCase Referer buttons-for-website spammer=yes SetEnvIfNoCase Referer buttons-for-website.com spammer=yes SetEnvIfNoCase Referer kambasoft spammer=yes SetEnvIfNoCase Referer kambasoft.com spammer=yes SetEnvIfNoCase Referer social-buttons spammer=yes SetEnvIfNoCase Referer social-buttons.com spammer=yes SetEnvIfNoCase Referer 4webmasters spammer=yes SetEnvIfNoCase Referer 4webmasters.org spammer=yes Order allow,deny allow from all deny from env=spammer # ---------------------------------------------------------------------- # Suppress or force the "www." at the beginning of URLs # ---------------------------------------------------------------------- # The same content should never be available under two different URLs - # especially not with and without "www." at the beginning, since this can cause # SEO problems (duplicate content). That's why you should choose one of the # alternatives and redirect the other one. # By default option 1 (no "www.") is activated. # no-www.org/faq.php?q=class_b # If you'd prefer to use option 2, just comment out all option 1 lines # and uncomment option 2. # IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME! # ---------------------------------------------------------------------- # Option 1: # Rewrite "www.example.com -> example.com". RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] # ---------------------------------------------------------------------- # Option 2: # Rewrite "example.com -> www.example.com". # Be aware that the following rule might not be a good idea if you use "real" # subdomains for certain parts of your website. # # RewriteCond %{HTTPS} !=on # RewriteCond %{HTTP_HOST} !^www\..+$ [NC] # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # # ---------------------------------------------------------------------- # Prevent 404 errors for non-existing redirected folders # ---------------------------------------------------------------------- # without -MultiViews, Apache will give a 404 for a rewrite if a folder of the # same name does not exist. # webmasterworld.com/apache/3808792.htm Options -MultiViews # ---------------------------------------------------------------------- # Custom Error pages # ---------------------------------------------------------------------- # If you are hosting your site in subdirectory, adjust this accordingly # e.g. ErrorDocument 404 /subdir/404.html ErrorDocument 400 http://sanbernardindorvpark.com/notfound.html ErrorDocument 403 http://sanbernardindorvpark.com/notfound.html ErrorDocument 404 http://sanbernardindorvpark.com/notfound.html ErrorDocument 408 http://sanbernardindorvpark.com/notfound.html ErrorDocument 500 http://sanbernardindorvpark.com/notfound.html # Commented out due to Google reporting a soft 404 error when active # ErrorDocument 410 http://sanbernardindorvpark.com/notfound.html # ---------------------------------------------------------------------- # UTF-8 encoding # ---------------------------------------------------------------------- # Use UTF-8 encoding for anything served text/plain or text/html AddDefaultCharset utf-8 # Force UTF-8 for a number of file formats AddCharset utf-8 .atom .css .js .json .rss .vtt .xml # ---------------------------------------------------------------------- # Custom Re-Directs # ---------------------------------------------------------------------- redirect 301 /#!about/c15v1 http://sanbernardindorvpark.com/ redirect 301 /#!rates/c1qal http://sanbernardindorvpark.com/rates/ redirect 301 /#!gallery/cjbl http://sanbernardindorvpark.com/photos/ redirect 301 /#!events/c19qp http://sanbernardindorvpark.com/attractions/ redirect 301 /#!visitus/cn3p http://sanbernardindorvpark.com/contact/