andreasonny83/Wordpress-Capistrano-Boilerplate/master/.htaccess - Htaccess File

andreasonny83/Wordpress-Capistrano-Boilerplate/master/.htaccess

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

# ----------------------------------------------------------------------
# | File access                                                        |
# ----------------------------------------------------------------------

# Block access to directories without a default document.
<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>

# ----------------------------------------------------------------------
# | Server-side technology information                                 |
# ----------------------------------------------------------------------

# Remove the `X-Powered-By` response header that:
#
#  * is set by some frameworks and server-side languages
#    (e.g.: ASP.NET, PHP), and its value contains information
#    about them (e.g.: their name, version number)
#
#  * doesn't provide any value to users, contributes to header
#    bloat, and in some cases, the information it provides can
#    expose vulnerabilities
#

<IfModule mod_headers.c>
    Header unset X-Powered-By
</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

# ######################################################################
# # WEB PERFORMANCE                                                    #
# ######################################################################

# ----------------------------------------------------------------------
# | Compression                                                        |
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>
  # Force compression for mangled `Accept-Encoding` request headers
  # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html

  <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>

  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  # Compress all output labeled with one of the following media types.
  #
  # (!) For Apache versions below version 2.3.7 you don't need to
  # enable `mod_filter` and can remove the `<IfModule mod_filter.c>`
  # and `</IfModule>` lines as `AddOutputFilterByType` is still in
  # the core directives.
  #
  # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype

  <IfModule mod_filter.c>
      AddOutputFilterByType DEFLATE "application/atom+xml" 
                                    "application/javascript" 
                                    "application/json" 
                                    "application/ld+json" 
                                    "application/manifest+json" 
                                    "application/rdf+xml" 
                                    "application/rss+xml" 
                                    "application/schema+json" 
                                    "application/vnd.geo+json" 
                                    "application/vnd.ms-fontobject" 
                                    "application/x-font-ttf" 
                                    "application/x-javascript" 
                                    "application/x-web-app-manifest+json" 
                                    "application/xhtml+xml" 
                                    "application/xml" 
                                    "font/eot" 
                                    "font/opentype" 
                                    "image/bmp" 
                                    "image/svg+xml" 
                                    "image/vnd.microsoft.icon" 
                                    "image/x-icon" 
                                    "text/cache-manifest" 
                                    "text/css" 
                                    "text/html" 
                                    "text/javascript" 
                                    "text/plain" 
                                    "text/vcard" 
                                    "text/vnd.rim.location.xloc" 
                                    "text/vtt" 
                                    "text/x-component" 
                                    "text/x-cross-domain-policy" 
                                    "text/xml"
  </IfModule>
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  # Map the following filename extensions to the specified
  # encoding type in order to make Apache serve the file types
  # with the appropriate `Content-Encoding` response header
  # (do note that this will NOT make Apache compress them!).
  #
  # If these files types would be served without an appropriate
  # `Content-Enable` response header, client applications (e.g.:
  # browsers) wouldn't know that they first need to uncompress
  # the response, and thus, wouldn't be able to understand the
  # content.
  #
  # https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding

  <IfModule mod_mime.c>
      AddEncoding gzip              svgz
  </IfModule>

</IfModule>

# ----------------------------------------------------------------------
# | ETags                                                              |
# ----------------------------------------------------------------------

# Remove `ETags` as resources are sent with far-future expires headers.
#
# https://developer.yahoo.com/performance/rules.html#etags
# https://tools.ietf.org/html/rfc7232#section-2.3

# `FileETag None` doesn't work in all cases.
<IfModule mod_headers.c>
    Header unset ETag
</IfModule>

FileETag None

# ----------------------------------------------------------------------
# | 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 week"

  # CSS

    ExpiresByType text/css                              "access plus 1 day"

  # 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 day"
    ExpiresByType application/x-javascript              "access plus 1 day"
    ExpiresByType text/javascript                       "access plus 1 day"

  # 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 day"
    ExpiresByType image/bmp                             "access plus 1 day"
    ExpiresByType image/gif                             "access plus 1 day"
    ExpiresByType image/jpeg                            "access plus 1 day"
    ExpiresByType image/png                             "access plus 1 day"
    ExpiresByType image/svg+xml                         "access plus 1 day"
    ExpiresByType image/webp                            "access plus 1 day"
    ExpiresByType video/mp4                             "access plus 1 day"
    ExpiresByType video/ogg                             "access plus 1 day"
    ExpiresByType video/webm                            "access plus 1 day"

  # Web fonts

    # Embedded OpenType (EOT)
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 week"
    ExpiresByType font/eot                              "access plus 1 week"

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

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

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

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

  # Other

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

</IfModule>

On Github License

Files

Download PDF of Htaccess file
DEFLATE, REQUEST_FILENAME

Comments

Apache