Skip to content

Instantly share code, notes, and snippets.

@IainIsCreative
Last active April 21, 2016 10:19
Show Gist options
  • Select an option

  • Save IainIsCreative/c368a62f7a95db1c93bb4cc41476b6e8 to your computer and use it in GitHub Desktop.

Select an option

Save IainIsCreative/c368a62f7a95db1c93bb4cc41476b6e8 to your computer and use it in GitHub Desktop.

Revisions

  1. IainIsCreative revised this gist Apr 21, 2016. No changes.
  2. IainIsCreative created this gist Apr 21, 2016.
    194 changes: 194 additions & 0 deletions .wp-htaccess
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,194 @@

    # ######################################################################
    # CUSTOM HELPERS
    # ######################################################################

    # ----------------------------------------------------------------------
    # Load images from remote server if they aren't found locally
    # useful once a site has gone into production
    # ----------------------------------------------------------------------

    #<IfModule mod_rewrite.c>
    # RewriteEngine on
    # RewriteCond %{REQUEST_FILENAME} !-d
    # RewriteCond %{REQUEST_FILENAME} !-f
    # RewriteRule content/uploads/(.*) \
    # http://{change-to-production-url}/content/uploads/$1 [NC,L]
    #</IfModule>


    # ######################################################################
    # WORDPRESS
    # pretty permalink rewrite
    # ######################################################################

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>



    # ######################################################################
    # # SECURITY #
    # ######################################################################

    # ----------------------------------------------------------------------
    # File access
    # Block access to directories without a default document.
    # You should leave the following uncommented, as you shouldn't allow
    # anyone to surf through every directory on your server (which may
    # includes rather private places such as the CMS's directories).
    # ----------------------------------------------------------------------

    <IfModule mod_autoindex.c>
    Options -Indexes
    </IfModule>


    # ----------------------------------------------------------------------
    # Server software information
    # Prevent Apache from adding a trailing footer line containing
    # information about the server to the server-generated documents
    # (e.g.: error messages, directory listings, etc.)
    # https://httpd.apache.org/docs/current/mod/core.html#serversignature
    # ----------------------------------------------------------------------

    ServerSignature Off


    # ######################################################################
    # PERFORMANCE
    # ######################################################################
    # ----------------------------------------------------------------------
    # Compression
    # ----------------------------------------------------------------------

    <IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE image/x-icon
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/x-font
    AddOutputFilterByType DEFLATE application/x-font-truetype
    AddOutputFilterByType DEFLATE application/x-font-ttf
    AddOutputFilterByType DEFLATE application/x-font-otf
    AddOutputFilterByType DEFLATE application/x-font-opentype
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
    AddOutputFilterByType DEFLATE font/ttf
    AddOutputFilterByType DEFLATE font/otf
    AddOutputFilterByType DEFLATE font/opentype

    # For Olders Browsers Which Can't Handle Compression
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    </IfModule>


    # ----------------------------------------------------------------------
    # Content transformation
    #
    # Prevent intermediate caches or proxies (e.g.: such as the ones
    # used by mobile network providers) from modifying the website's content.
    # https://developers.google.com/speed/pagespeed/module/configuration#notransform
    # ----------------------------------------------------------------------

    #<IfModule mod_headers.c>
    # Header merge Cache-Control "no-transform"
    #</IfModule>


    # ----------------------------------------------------------------------
    # Expires headers
    #
    # Serve resources with far-future expires headers.
    # (!) If you don't control versioning with filename-based
    # cache busting, you should consider lowering the cache times
    # to something like one week.
    # https://httpd.apache.org/docs/current/mod/mod_expires.html
    # ----------------------------------------------------------------------

    <IfModule mod_expires.c>

    ExpiresActive on
    ExpiresDefault "access plus 1 month"

    # CSS
    ExpiresByType text/css "access plus 1 year"

    # Data interchange
    ExpiresByType application/atom+xml "access plus 1 hour"
    ExpiresByType application/rdf+xml "access plus 1 hour"
    ExpiresByType application/rss+xml "access plus 1 hour"
    ExpiresByType application/json "access plus 0 seconds"
    ExpiresByType application/ld+json "access plus 0 seconds"
    ExpiresByType application/schema+json "access plus 0 seconds"
    ExpiresByType application/vnd.geo+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/vnd.microsoft.icon "access plus 1 week"
    ExpiresByType image/x-icon "access plus 1 week"

    # HTML
    ExpiresByType text/html "access plus 0 seconds"

    # JavaScript
    ExpiresByType application/javascript "access plus 1 year"
    ExpiresByType application/x-javascript "access plus 1 year"
    ExpiresByType text/javascript "access plus 1 year"

    # Manifest files
    ExpiresByType application/manifest+json "access plus 1 week"
    ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
    ExpiresByType text/cache-manifest "access plus 0 seconds"

    # Media files
    ExpiresByType audio/ogg "access plus 1 month"
    ExpiresByType image/bmp "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 image/svg+xml "access plus 1 month"
    ExpiresByType image/webp "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 fonts
    # Embedded OpenType (EOT)
    ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
    ExpiresByType font/eot "access plus 1 month"

    # OpenType
    ExpiresByType font/opentype "access plus 1 month"

    # TrueType
    ExpiresByType application/x-font-ttf "access plus 1 month"

    # Web Open Font Format (WOFF) 1.0
    ExpiresByType application/font-woff "access plus 1 month"
    ExpiresByType application/x-font-woff "access plus 1 month"
    ExpiresByType font/woff "access plus 1 month"

    # Web Open Font Format (WOFF) 2.0
    ExpiresByType application/font-woff2 "access plus 1 month"

    # Other
    ExpiresByType text/x-cross-domain-policy "access plus 1 week"

    </IfModule>