Created
November 25, 2015 08:46
-
-
Save cema-sp/1b7a5a5e2b694a46277d to your computer and use it in GitHub Desktop.
Apache config for Middleman (from tille)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# This is the main Apache HTTP server configuration file. It contains the | |
# configuration directives that give the server its instructions. | |
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. | |
# In particular, see | |
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html> | |
# for a discussion of each configuration directive. | |
# | |
# Do NOT simply read the instructions in here without understanding | |
# what they do. They're here only as hints or reminders. If you are unsure | |
# consult the online docs. You have been warned. | |
# | |
# Configuration and logfile names: If the filenames you specify for many | |
# of the server's control files begin with "/" (or "drive:/" for Win32), the | |
# server will use that explicit path. If the filenames do *not* begin | |
# with "/", the value of ServerRoot is prepended -- so "logs/access_log" | |
# with ServerRoot set to "/usr/local/apache2" will be interpreted by the | |
# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" | |
# will be interpreted as '/logs/access_log'. | |
# | |
# ServerRoot: The top of the directory tree under which the server's | |
# configuration, error, and log files are kept. | |
# | |
# Do not add a slash at the end of the directory path. If you point | |
# ServerRoot at a non-local disk, be sure to specify a local disk on the | |
# Mutex directive, if file-based mutexes are used. If you wish to share the | |
# same ServerRoot for multiple httpd daemons, you will need to change at | |
# least PidFile. | |
# | |
ServerRoot "/usr/local/apache2" | |
# | |
# Mutex: Allows you to set the mutex mechanism and mutex file directory | |
# for individual mutexes, or change the global defaults | |
# | |
# Uncomment and change the directory if mutexes are file-based and the default | |
# mutex file directory is not on a local disk or is not appropriate for some | |
# other reason. | |
# | |
# Mutex default:logs | |
# | |
# Listen: Allows you to bind Apache to specific IP addresses and/or | |
# ports, instead of the default. See also the <VirtualHost> | |
# directive. | |
# | |
# Change this to Listen on specific IP addresses as shown below to | |
# prevent Apache from glomming onto all bound IP addresses. | |
# | |
#Listen 12.34.56.78:80 | |
Listen 80 | |
# | |
# Dynamic Shared Object (DSO) Support | |
# | |
# To be able to use the functionality of a module which was built as a DSO you | |
# have to place corresponding `LoadModule' lines at this location so the | |
# directives contained in it are actually available _before_ they are used. | |
# Statically compiled modules (those listed by `httpd -l') do not need | |
# to be loaded here. | |
# | |
# Example: | |
# LoadModule foo_module modules/mod_foo.so | |
# | |
LoadModule authn_file_module modules/mod_authn_file.so | |
#LoadModule authn_dbm_module modules/mod_authn_dbm.so | |
#LoadModule authn_anon_module modules/mod_authn_anon.so | |
#LoadModule authn_dbd_module modules/mod_authn_dbd.so | |
#LoadModule authn_socache_module modules/mod_authn_socache.so | |
LoadModule authn_core_module modules/mod_authn_core.so | |
LoadModule authz_host_module modules/mod_authz_host.so | |
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so | |
LoadModule authz_user_module modules/mod_authz_user.so | |
#LoadModule authz_dbm_module modules/mod_authz_dbm.so | |
#LoadModule authz_owner_module modules/mod_authz_owner.so | |
#LoadModule authz_dbd_module modules/mod_authz_dbd.so | |
LoadModule authz_core_module modules/mod_authz_core.so | |
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so | |
LoadModule access_compat_module modules/mod_access_compat.so | |
LoadModule auth_basic_module modules/mod_auth_basic.so | |
#LoadModule auth_form_module modules/mod_auth_form.so | |
#LoadModule auth_digest_module modules/mod_auth_digest.so | |
#LoadModule allowmethods_module modules/mod_allowmethods.so | |
#LoadModule file_cache_module modules/mod_file_cache.so | |
#LoadModule cache_module modules/mod_cache.so | |
#LoadModule cache_disk_module modules/mod_cache_disk.so | |
#LoadModule cache_socache_module modules/mod_cache_socache.so | |
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so | |
#LoadModule socache_dbm_module modules/mod_socache_dbm.so | |
#LoadModule socache_memcache_module modules/mod_socache_memcache.so | |
#LoadModule macro_module modules/mod_macro.so | |
#LoadModule dbd_module modules/mod_dbd.so | |
#LoadModule dumpio_module modules/mod_dumpio.so | |
#LoadModule buffer_module modules/mod_buffer.so | |
#LoadModule ratelimit_module modules/mod_ratelimit.so | |
LoadModule reqtimeout_module modules/mod_reqtimeout.so | |
#LoadModule ext_filter_module modules/mod_ext_filter.so | |
#LoadModule request_module modules/mod_request.so | |
LoadModule include_module modules/mod_include.so | |
LoadModule filter_module modules/mod_filter.so | |
#LoadModule substitute_module modules/mod_substitute.so | |
#LoadModule sed_module modules/mod_sed.so | |
LoadModule deflate_module modules/mod_deflate.so | |
LoadModule mime_module modules/mod_mime.so | |
#LoadModule ldap_module modules/mod_ldap.so | |
LoadModule log_config_module modules/mod_log_config.so | |
#LoadModule log_debug_module modules/mod_log_debug.so | |
#LoadModule logio_module modules/mod_logio.so | |
LoadModule env_module modules/mod_env.so | |
LoadModule expires_module modules/mod_expires.so | |
LoadModule headers_module modules/mod_headers.so | |
#LoadModule unique_id_module modules/mod_unique_id.so | |
LoadModule setenvif_module modules/mod_setenvif.so | |
LoadModule version_module modules/mod_version.so | |
#LoadModule remoteip_module modules/mod_remoteip.so | |
#LoadModule proxy_module modules/mod_proxy.so | |
#LoadModule proxy_connect_module modules/mod_proxy_connect.so | |
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so | |
#LoadModule proxy_http_module modules/mod_proxy_http.so | |
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so | |
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so | |
#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so | |
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so | |
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so | |
#LoadModule proxy_express_module modules/mod_proxy_express.so | |
#LoadModule session_module modules/mod_session.so | |
#LoadModule session_cookie_module modules/mod_session_cookie.so | |
#LoadModule session_crypto_module modules/mod_session_crypto.so | |
#LoadModule session_dbd_module modules/mod_session_dbd.so | |
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so | |
#LoadModule ssl_module modules/mod_ssl.so | |
#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so | |
#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so | |
#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so | |
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so | |
LoadModule unixd_module modules/mod_unixd.so | |
#LoadModule dav_module modules/mod_dav.so | |
LoadModule status_module modules/mod_status.so | |
LoadModule autoindex_module modules/mod_autoindex.so | |
#LoadModule info_module modules/mod_info.so | |
#LoadModule cgid_module modules/mod_cgid.so | |
#LoadModule dav_fs_module modules/mod_dav_fs.so | |
#LoadModule vhost_alias_module modules/mod_vhost_alias.so | |
#LoadModule negotiation_module modules/mod_negotiation.so | |
LoadModule dir_module modules/mod_dir.so | |
#LoadModule actions_module modules/mod_actions.so | |
#LoadModule speling_module modules/mod_speling.so | |
#LoadModule userdir_module modules/mod_userdir.so | |
LoadModule alias_module modules/mod_alias.so | |
LoadModule rewrite_module modules/mod_rewrite.so | |
<IfModule unixd_module> | |
# | |
# If you wish httpd to run as a different user or group, you must run | |
# httpd as root initially and it will switch. | |
# | |
# User/Group: The name (or #number) of the user/group to run httpd as. | |
# It is usually good practice to create a dedicated user and group for | |
# running httpd, as with most system services. | |
# | |
User daemon | |
Group daemon | |
</IfModule> | |
# 'Main' server configuration | |
# | |
# The directives in this section set up the values used by the 'main' | |
# server, which responds to any requests that aren't handled by a | |
# <VirtualHost> definition. These values also provide defaults for | |
# any <VirtualHost> containers you may define later in the file. | |
# | |
# All of these directives may appear inside <VirtualHost> containers, | |
# in which case these default settings will be overridden for the | |
# virtual host being defined. | |
# | |
# | |
# ServerAdmin: Your address, where problems with the server should be | |
# e-mailed. This address appears on some server-generated pages, such | |
# as error documents. e.g. admin@your-domain.com | |
# | |
ServerAdmin you@example.com | |
# | |
# ServerName gives the name and port that the server uses to identify itself. | |
# This can often be determined automatically, but we recommend you specify | |
# it explicitly to prevent problems during startup. | |
# | |
# If your host doesn't have a registered DNS name, enter its IP address here. | |
# | |
#ServerName www.example.com:80 | |
# | |
# Deny access to the entirety of your server's filesystem. You must | |
# explicitly permit access to web content directories in other | |
# <Directory> blocks below. | |
# | |
<Directory /> | |
AllowOverride none | |
Require all denied | |
</Directory> | |
# | |
# Note that from this point forward you must specifically allow | |
# particular features to be enabled - so if something's not working as | |
# you might expect, make sure that you have specifically enabled it | |
# below. | |
# | |
# | |
# DocumentRoot: The directory out of which you will serve your | |
# documents. By default, all requests are taken from this directory, but | |
# symbolic links and aliases may be used to point to other locations. | |
# | |
DocumentRoot "/usr/local/apache2/htdocs" | |
<Directory "/usr/local/apache2/htdocs"> | |
# | |
# Possible values for the Options directive are "None", "All", | |
# or any combination of: | |
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews | |
# | |
# Note that "MultiViews" must be named *explicitly* --- "Options All" | |
# doesn't give it to you. | |
# | |
# The Options directive is both complicated and important. Please see | |
# http://httpd.apache.org/docs/2.4/mod/core.html#options | |
# for more information. | |
# | |
Options Indexes FollowSymLinks | |
# | |
# AllowOverride controls what directives may be placed in .htaccess files. | |
# It can be "All", "None", or any combination of the keywords: | |
# AllowOverride FileInfo AuthConfig Limit | |
# | |
AllowOverride None | |
# | |
# Controls who can get stuff from this server. | |
# | |
Require all granted | |
# Apache Server Configs v2.14.0 | MIT License | |
# https://github.com/h5bp/server-configs-apache | |
# (!) Using `.htaccess` files slows down Apache, therefore, if you have | |
# access to the main server configuration file (which is usually called | |
# `httpd.conf`), you should add this logic there. | |
# | |
# https://httpd.apache.org/docs/current/howto/htaccess.html. | |
# ###################################################################### | |
# # CROSS-ORIGIN # | |
# ###################################################################### | |
# ---------------------------------------------------------------------- | |
# | Cross-origin requests | | |
# ---------------------------------------------------------------------- | |
# Allow cross-origin requests. | |
# | |
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS | |
# http://enable-cors.org/ | |
# http://www.w3.org/TR/cors/ | |
# <IfModule mod_headers.c> | |
# Header set Access-Control-Allow-Origin "*" | |
# </IfModule> | |
# ---------------------------------------------------------------------- | |
# | Cross-origin images | | |
# ---------------------------------------------------------------------- | |
# Send the CORS header for images when browsers request it. | |
# | |
# https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image | |
# https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html | |
<IfModule mod_setenvif.c> | |
<IfModule mod_headers.c> | |
<FilesMatch "\.(bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$"> | |
SetEnvIf Origin ":" IS_CORS | |
Header set Access-Control-Allow-Origin "*" env=IS_CORS | |
</FilesMatch> | |
</IfModule> | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# | Cross-origin web fonts | | |
# ---------------------------------------------------------------------- | |
# Allow cross-origin access to web fonts. | |
<IfModule mod_headers.c> | |
<FilesMatch "\.(eot|otf|tt[cf]|woff2?)$"> | |
Header set Access-Control-Allow-Origin "*" | |
</FilesMatch> | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# | Cross-origin resource timing | | |
# ---------------------------------------------------------------------- | |
# Allow cross-origin access to the timing information for all resources. | |
# | |
# If a resource isn't served with a `Timing-Allow-Origin` header that | |
# would allow its timing information to be shared with the document, | |
# some of the attributes of the `PerformanceResourceTiming` object will | |
# be set to zero. | |
# | |
# http://www.w3.org/TR/resource-timing/ | |
# http://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/ | |
# <IfModule mod_headers.c> | |
# Header set Timing-Allow-Origin: "*" | |
# </IfModule> | |
# ###################################################################### | |
# # ERRORS # | |
# ###################################################################### | |
# ---------------------------------------------------------------------- | |
# | Custom error messages/pages | | |
# ---------------------------------------------------------------------- | |
# Customize what Apache returns to the client in case of an error. | |
# https://httpd.apache.org/docs/current/mod/core.html#errordocument | |
ErrorDocument 404 /404 | |
# ---------------------------------------------------------------------- | |
# | Error prevention | | |
# ---------------------------------------------------------------------- | |
# Disable the pattern matching based on filenames. | |
# | |
# This setting prevents Apache from returning a 404 error as the result | |
# of a rewrite when the directory with the same name does not exist. | |
# | |
# https://httpd.apache.org/docs/current/content-negotiation.html#multiviews | |
Options -MultiViews | |
# ###################################################################### | |
# # INTERNET EXPLORER # | |
# ###################################################################### | |
# ---------------------------------------------------------------------- | |
# | Document modes | | |
# ---------------------------------------------------------------------- | |
# Force Internet Explorer 8/9/10 to render pages in the highest mode | |
# available in the various cases when it may not. | |
# | |
# https://hsivonen.fi/doctype/#ie8 | |
# | |
# (!) Starting with Internet Explorer 11, document modes are deprecated. | |
# If your business still relies on older web apps and services that were | |
# designed for older versions of Internet Explorer, you might want to | |
# consider enabling `Enterprise Mode` throughout your company. | |
# | |
# https://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode | |
# http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx | |
<IfModule mod_headers.c> | |
Header set X-UA-Compatible "IE=edge" | |
# `mod_headers` cannot match based on the content-type, however, | |
# the `X-UA-Compatible` response header should be send only for | |
# HTML documents and not for the other resources. | |
<FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$"> | |
Header unset X-UA-Compatible | |
</FilesMatch> | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# | Iframes cookies | | |
# ---------------------------------------------------------------------- | |
# Allow cookies to be set from iframes in Internet Explorer. | |
# | |
# https://msdn.microsoft.com/en-us/library/ms537343.aspx | |
# http://www.w3.org/TR/2000/CR-P3P-20001215/ | |
# <IfModule mod_headers.c> | |
# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"" | |
# </IfModule> | |
# ###################################################################### | |
# # MEDIA TYPES AND CHARACTER ENCODINGS # | |
# ###################################################################### | |
# ---------------------------------------------------------------------- | |
# | Media types | | |
# ---------------------------------------------------------------------- | |
# Serve resources with the proper media types (f.k.a. MIME types). | |
# | |
# https://www.iana.org/assignments/media-types/media-types.xhtml | |
# https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype | |
<IfModule mod_mime.c> | |
# Data interchange | |
AddType application/atom+xml atom | |
AddType application/json json map topojson | |
AddType application/ld+json jsonld | |
AddType application/rss+xml rss | |
AddType application/vnd.geo+json geojson | |
AddType application/xml rdf xml | |
# JavaScript | |
# Normalize to standard type. | |
# https://tools.ietf.org/html/rfc4329#section-7.2 | |
AddType application/javascript js jsonp | |
# Manifest files | |
AddType application/manifest+json webmanifest | |
AddType application/x-web-app-manifest+json webapp | |
AddType text/cache-manifest appcache | |
# Media files | |
AddType audio/mp4 f4a f4b m4a | |
AddType audio/ogg oga ogg opus | |
AddType image/bmp bmp | |
AddType image/svg+xml svg svgz | |
AddType image/webp webp | |
AddType video/mp4 f4v f4p m4v mp4 | |
AddType video/ogg ogv | |
AddType video/webm webm | |
AddType video/x-flv flv | |
# Serving `.ico` image files with a different media type | |
# prevents Internet Explorer from displaying then as images: | |
# https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee | |
AddType image/x-icon cur ico | |
# Web fonts | |
AddType application/font-woff woff | |
AddType application/font-woff2 woff2 | |
AddType application/vnd.ms-fontobject eot | |
# Browsers usually ignore the font media types and simply sniff | |
# the bytes to figure out the font type. | |
# https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern | |
# | |
# However, Blink and WebKit based browsers will show a warning | |
# in the console if the following font types are served with any | |
# other media types. | |
AddType application/x-font-ttf ttc ttf | |
AddType font/opentype otf | |
# Other | |
AddType application/octet-stream safariextz | |
AddType application/x-bb-appworld bbaw | |
AddType application/x-chrome-extension crx | |
AddType application/x-opera-extension oex | |
AddType application/x-xpinstall xpi | |
AddType text/vcard vcard vcf | |
AddType text/vnd.rim.location.xloc xloc | |
AddType text/vtt vtt | |
AddType text/x-component htc | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# | Character encodings | | |
# ---------------------------------------------------------------------- | |
# Serve all resources labeled as `text/html` or `text/plain` | |
# with the media type `charset` parameter set to `UTF-8`. | |
# | |
# https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset | |
AddDefaultCharset utf-8 | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Serve the following file types with the media type `charset` | |
# parameter set to `UTF-8`. | |
# | |
# https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset | |
<IfModule mod_mime.c> | |
AddCharset utf-8 .atom \ | |
.bbaw \ | |
.css \ | |
.geojson \ | |
.js \ | |
.json \ | |
.jsonld \ | |
.manifest \ | |
.rdf \ | |
.rss \ | |
.topojson \ | |
.vtt \ | |
.webapp \ | |
.webmanifest \ | |
.xloc \ | |
.xml | |
</IfModule> | |
# ###################################################################### | |
# # REWRITES # | |
# ###################################################################### | |
# ---------------------------------------------------------------------- | |
# | Rewrite engine | | |
# ---------------------------------------------------------------------- | |
# (1) Turn on the rewrite engine (this is necessary in order for | |
# the `RewriteRule` directives to work). | |
# | |
# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine | |
# | |
# (2) Enable the `FollowSymLinks` option if it isn't already. | |
# | |
# https://httpd.apache.org/docs/current/mod/core.html#options | |
# | |
# (3) If your web host doesn't allow the `FollowSymlinks` option, | |
# you need to comment it out or remove it, and then uncomment | |
# the `Options +SymLinksIfOwnerMatch` line (4), but be aware | |
# of the performance impact. | |
# | |
# https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks | |
# | |
# (4) Some cloud hosting services will require you set `RewriteBase`. | |
# | |
# https://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site | |
# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase | |
# | |
# (5) Depending on how your server is set up, you may also need to | |
# use the `RewriteOptions` directive to enable some options for | |
# the rewrite engine. | |
# | |
# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions | |
# | |
# (6) Set %{ENV:PROTO} variable, to allow rewrites to redirect with the | |
# appropriate schema automatically (http or https). | |
<IfModule mod_rewrite.c> | |
# (1) | |
RewriteEngine On | |
# (2) | |
Options +FollowSymlinks | |
# (3) | |
# Options +SymLinksIfOwnerMatch | |
# (4) | |
# RewriteBase / | |
# (5) | |
# RewriteOptions <options> | |
# (6) | |
RewriteCond %{HTTPS} =on | |
RewriteRule ^ - [env=proto:https] | |
RewriteCond %{HTTPS} !=on | |
RewriteRule ^ - [env=proto:http] | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# | Forcing `https://` | | |
# ---------------------------------------------------------------------- | |
# Redirect from the `http://` to the `https://` version of the URL. | |
# https://wiki.apache.org/httpd/RewriteHTTPToHTTPS | |
# <IfModule mod_rewrite.c> | |
# RewriteEngine On | |
# RewriteCond %{HTTPS} !=on | |
# RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] | |
# </IfModule> | |
# ---------------------------------------------------------------------- | |
# | Suppressing / Forcing 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. | |
# This can cause SEO problems (duplicate content), and therefore, | |
# you should choose one of the alternatives and redirect the other | |
# one. | |
# | |
# By default `Option 1` (no `www.`) is activated. | |
# http://no-www.org/faq.php?q=class_b | |
# | |
# If you would prefer to use `Option 2`, just comment out all the | |
# lines from `Option 1` and uncomment the ones from `Option 2`. | |
# | |
# (!) NEVER USE BOTH RULES AT THE SAME TIME! | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Option 1: rewrite www.example.com → example.com | |
<IfModule mod_rewrite.c> | |
RewriteEngine On | |
RewriteCond %{HTTPS} !=on | |
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] | |
RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L] | |
</IfModule> | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Option 2: rewrite example.com → www.example.com | |
# | |
# Be aware that the following might not be a good idea if you use "real" | |
# subdomains for certain parts of your website. | |
# <IfModule mod_rewrite.c> | |
# RewriteEngine On | |
# RewriteCond %{HTTPS} !=on | |
# RewriteCond %{HTTP_HOST} !^www\. [NC] | |
# RewriteCond %{SERVER_ADDR} !=127.0.0.1 | |
# RewriteCond %{SERVER_ADDR} !=::1 | |
# RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] | |
# </IfModule> | |
# ###################################################################### | |
# # SECURITY # | |
# ###################################################################### | |
# ---------------------------------------------------------------------- | |
# | Clickjacking | | |
# ---------------------------------------------------------------------- | |
# Protect website against clickjacking. | |
# | |
# The example below sends the `X-Frame-Options` response header with | |
# the value `DENY`, informing browsers not to display the content of | |
# the web page in any frame. | |
# | |
# This might not be the best setting for everyone. You should read | |
# about the other two possible values the `X-Frame-Options` header | |
# field can have: `SAMEORIGIN` and `ALLOW-FROM`. | |
# https://tools.ietf.org/html/rfc7034#section-2.1. | |
# | |
# Keep in mind that while you could send the `X-Frame-Options` header | |
# for all of your website’s pages, this has the potential downside that | |
# it forbids even non-malicious framing of your content (e.g.: when | |
# users visit your website using a Google Image Search results page). | |
# | |
# Nonetheless, you should ensure that you send the `X-Frame-Options` | |
# header for all pages that allow a user to make a state changing | |
# operation (e.g: pages that contain one-click purchase links, checkout | |
# or bank-transfer confirmation pages, pages that make permanent | |
# configuration changes, etc.). | |
# | |
# Sending the `X-Frame-Options` header can also protect your website | |
# against more than just clickjacking attacks: | |
# https://cure53.de/xfo-clickjacking.pdf. | |
# | |
# https://tools.ietf.org/html/rfc7034 | |
# http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx | |
# https://www.owasp.org/index.php/Clickjacking | |
# <IfModule mod_headers.c> | |
# Header set X-Frame-Options "DENY" | |
# # `mod_headers` cannot match based on the content-type, however, | |
# # the `X-Frame-Options` response header should be send only for | |
# # HTML documents and not for the other resources. | |
# <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$"> | |
# Header unset X-Frame-Options | |
# </FilesMatch> | |
# </IfModule> | |
# ---------------------------------------------------------------------- | |
# | Content Security Policy (CSP) | | |
# ---------------------------------------------------------------------- | |
# Mitigate the risk of cross-site scripting and other content-injection | |
# attacks. | |
# | |
# This can be done by setting a `Content Security Policy` which | |
# whitelists trusted sources of content for your website. | |
# | |
# The example header below allows ONLY scripts that are loaded from | |
# the current website's origin (no inline scripts, no CDN, etc). | |
# That almost certainly won't work as-is for your website! | |
# | |
# To make things easier, you can use an online CSP header generator | |
# such as: http://cspisawesome.com/. | |
# | |
# http://content-security-policy.com/ | |
# http://www.html5rocks.com/en/tutorials/security/content-security-policy/ | |
# http://www.w3.org/TR/CSP11/). | |
# <IfModule mod_headers.c> | |
# Header set Content-Security-Policy "script-src 'self'; object-src 'self'" | |
# # `mod_headers` cannot match based on the content-type, however, | |
# # the `Content-Security-Policy` response header should be send | |
# # only for HTML documents and not for the other resources. | |
# <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$"> | |
# Header unset Content-Security-Policy | |
# </FilesMatch> | |
# </IfModule> | |
# ---------------------------------------------------------------------- | |
# | 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> | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Block access to all hidden files and directories with the exception of | |
# the visible content from within the `/.well-known/` hidden directory. | |
# | |
# These types of files usually contain user preferences or the preserved | |
# state of an utility, and can include rather private places like, for | |
# example, the `.git` or `.svn` directories. | |
# | |
# The `/.well-known/` directory represents the standard (RFC 5785) path | |
# prefix for "well-known locations" (e.g.: `/.well-known/manifest.json`, | |
# `/.well-known/keybase.txt`), and therefore, access to its visible | |
# content should not be blocked. | |
# | |
# https://www.mnot.net/blog/2010/04/07/well-known | |
# https://tools.ietf.org/html/rfc5785 | |
<IfModule mod_rewrite.c> | |
RewriteEngine On | |
RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC] | |
RewriteCond %{SCRIPT_FILENAME} -d [OR] | |
RewriteCond %{SCRIPT_FILENAME} -f | |
RewriteRule "(^|/)\." - [F] | |
</IfModule> | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Block access to files that can expose sensitive information. | |
# | |
# By default, block access to backup and source files that may be | |
# left by some text editors and can pose a security risk when anyone | |
# has access to them. | |
# | |
# http://feross.org/cmsploit/ | |
# | |
# (!) Update the `<FilesMatch>` regular expression from below to | |
# include any files that might end up on your production server and | |
# can expose sensitive information about your website. These files may | |
# include: configuration files, files that contain metadata about the | |
# project (e.g.: project dependencies), build scripts, etc.. | |
<FilesMatch "(^#.*#|\.(bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$"> | |
# Apache < 2.3 | |
<IfModule !mod_authz_core.c> | |
Order allow,deny | |
Deny from all | |
Satisfy All | |
</IfModule> | |
# Apache ≥ 2.3 | |
<IfModule mod_authz_core.c> | |
Require all denied | |
</IfModule> | |
</FilesMatch> | |
# ---------------------------------------------------------------------- | |
# | HTTP Strict Transport Security (HSTS) | | |
# ---------------------------------------------------------------------- | |
# Force client-side SSL redirection. | |
# | |
# If a user types `example.com` in their browser, even if the server | |
# redirects them to the secure version of the website, that still leaves | |
# a window of opportunity (the initial HTTP connection) for an attacker | |
# to downgrade or redirect the request. | |
# | |
# The following header ensures that browser will ONLY connect to your | |
# server via HTTPS, regardless of what the users type in the browser's | |
# address bar. | |
# | |
# (!) Remove the `includeSubDomains` optional directive if the website's | |
# subdomains are not using HTTPS. | |
# | |
# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/ | |
# https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1 | |
# http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx | |
# <IfModule mod_headers.c> | |
# Header always set Strict-Transport-Security "max-age=16070400; includeSubDomains" | |
# </IfModule> | |
# ---------------------------------------------------------------------- | |
# | Reducing MIME type security risks | | |
# ---------------------------------------------------------------------- | |
# Prevent some browsers from MIME-sniffing the response. | |
# | |
# This reduces exposure to drive-by download attacks and cross-origin | |
# data leaks, and should be left uncommented, especially if the server | |
# is serving user-uploaded content or content that could potentially be | |
# treated as executable by the browser. | |
# | |
# http://www.slideshare.net/hasegawayosuke/owasp-hasegawa | |
# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx | |
# https://msdn.microsoft.com/en-us/library/ie/gg622941.aspx | |
# https://mimesniff.spec.whatwg.org/ | |
<IfModule mod_headers.c> | |
Header set X-Content-Type-Options "nosniff" | |
</IfModule> | |
# ---------------------------------------------------------------------- | |
# | Reflected Cross-Site Scripting (XSS) attacks | | |
# ---------------------------------------------------------------------- | |
# (1) Try to re-enable the cross-site scripting (XSS) filter built | |
# into most web browsers. | |
# | |
# The filter is usually enabled by default, but in some cases it | |
# may be disabled by the user. However, in Internet Explorer for | |
# example, it can be re-enabled just by sending the | |
# `X-XSS-Protection` header with the value of `1`. | |
# | |
# (2) Prevent web browsers from rendering the web page if a potential | |
# reflected (a.k.a non-persistent) XSS attack is detected by the | |
# filter. | |
# | |
# By default, if the filter is enabled and browsers detect a | |
# reflected XSS attack, they will attempt to block the attack | |
# by making the smallest possible modifications to the returned | |
# web page. | |
# | |
# Unfortunately, in some browsers (e.g.: Internet Explorer), | |
# this default behavior may allow the XSS filter to be exploited, | |
# thereby, it's better to inform browsers to prevent the rendering | |
# of the page altogether, instead of attempting to modify it. | |
# | |
# https://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities | |
# | |
# (!) Do not rely on the XSS filter to prevent XSS attacks! Ensure that | |
# you are taking all possible measures to prevent XSS attacks, the | |
# most obvious being: validating and sanitizing your website's inputs. | |
# | |
# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx | |
# http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx | |
# https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 | |
# <IfModule mod_headers.c> | |
# # (1) (2) | |
# Header set X-XSS-Protection "1; mode=block" | |
# # `mod_headers` cannot match based on the content-type, however, | |
# # the `X-XSS-Protection` response header should be send only for | |
# # HTML documents and not for the other resources. | |
# <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$"> | |
# Header unset X-XSS-Protection | |
# </FilesMatch> | |
# </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 as far as users are concern, | |
# and in some cases, the information provided by it can | |
# be used by attackers | |
# | |
# (!) If you can, you should disable the `X-Powered-By` header from the | |
# language / framework level (e.g.: for PHP, you can do that by setting | |
# `expose_php = off` in `php.ini`) | |
# | |
# https://php.net/manual/en/ini.core.php#ini.expose-php | |
<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 | |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Prevent Apache from sending in the `Server` response header its | |
# exact version number, the description of the generic OS-type or | |
# information about its compiled-in modules. | |
# | |
# (!) The `ServerTokens` directive will only work in the main server | |
# configuration file, so don't try to enable it in the `.htaccess` file! | |
# | |
# https://httpd.apache.org/docs/current/mod/core.html#servertokens | |
#ServerTokens Prod | |
# ###################################################################### | |
# # 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> | |
# ---------------------------------------------------------------------- | |
# | 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://tools.ietf.org/html/rfc2616#section-14.9.5 | |
# | |
# (!) If you are using `mod_pagespeed`, please note that setting | |
# the `Cache-Control: no-transform` response header will prevent | |
# `PageSpeed` from rewriting `HTML` files, and, if the | |
# `ModPagespeedDisableRewriteOnNoTransform` directive isn't set | |
# to `off`, also from rewriting other resources. | |
# | |
# https://developers.google.com/speed/pagespeed/module/configuration#notransform | |
# <IfModule mod_headers.c> | |
# Header merge Cache-Control "no-transform" | |
# </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 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> | |
# ---------------------------------------------------------------------- | |
# | File concatenation | | |
# ---------------------------------------------------------------------- | |
# Allow concatenation from within specific files. | |
# | |
# e.g.: | |
# | |
# If you have the following lines in a file called, for | |
# example, `main.combined.js`: | |
# | |
# <!--#include file="js/jquery.js" --> | |
# <!--#include file="js/jquery.timer.js" --> | |
# | |
# Apache will replace those lines with the content of the | |
# specified files. | |
# <IfModule mod_include.c> | |
# <FilesMatch "\.combined\.js$"> | |
# Options +Includes | |
# AddOutputFilterByType INCLUDES application/javascript \ | |
# application/x-javascript \ | |
# text/javascript | |
# SetOutputFilter INCLUDES | |
# </FilesMatch> | |
# <FilesMatch "\.combined\.css$"> | |
# Options +Includes | |
# AddOutputFilterByType INCLUDES text/css | |
# SetOutputFilter INCLUDES | |
# </FilesMatch> | |
# </IfModule> | |
# ---------------------------------------------------------------------- | |
# | Filename-based cache busting | | |
# ---------------------------------------------------------------------- | |
# If you're not using a build process to manage your filename version | |
# revving, you might want to consider enabling the following directives | |
# to route all requests such as `/style.12345.css` to `/style.css`. | |
# | |
# To understand why this is important and even a better solution than | |
# using something like `*.css?v231`, please see: | |
# http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/ | |
# <IfModule mod_rewrite.c> | |
# RewriteEngine On | |
# RewriteCond %{REQUEST_FILENAME} !-f | |
# RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp|webmanifest)$ $1.$3 [L] | |
# </IfModule> | |
</Directory> | |
# | |
# DirectoryIndex: sets the file that Apache will serve if a directory | |
# is requested. | |
# | |
<IfModule dir_module> | |
DirectoryIndex index.html | |
</IfModule> | |
# | |
# The following lines prevent .htaccess and .htpasswd files from being | |
# viewed by Web clients. | |
# | |
<Files ".ht*"> | |
Require all denied | |
</Files> | |
# | |
# ErrorLog: The location of the error log file. | |
# If you do not specify an ErrorLog directive within a <VirtualHost> | |
# container, error messages relating to that virtual host will be | |
# logged here. If you *do* define an error logfile for a <VirtualHost> | |
# container, that host's errors will be logged there and not here. | |
# | |
ErrorLog /proc/self/fd/2 | |
# | |
# LogLevel: Control the number of messages logged to the error_log. | |
# Possible values include: debug, info, notice, warn, error, crit, | |
# alert, emerg. | |
# | |
LogLevel warn | |
<IfModule log_config_module> | |
# | |
# The following directives define some format nicknames for use with | |
# a CustomLog directive (see below). | |
# | |
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined | |
LogFormat "%h %l %u %t \"%r\" %>s %b" common | |
<IfModule logio_module> | |
# You need to enable mod_logio.c to use %I and %O | |
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio | |
</IfModule> | |
# | |
# The location and format of the access logfile (Common Logfile Format). | |
# If you do not define any access logfiles within a <VirtualHost> | |
# container, they will be logged here. Contrariwise, if you *do* | |
# define per-<VirtualHost> access logfiles, transactions will be | |
# logged therein and *not* in this file. | |
# | |
CustomLog /proc/self/fd/1 common | |
# | |
# If you prefer a logfile with access, agent, and referer information | |
# (Combined Logfile Format) you can use the following directive. | |
# | |
#CustomLog "logs/access_log" combined | |
</IfModule> | |
<IfModule alias_module> | |
# | |
# Redirect: Allows you to tell clients about documents that used to | |
# exist in your server's namespace, but do not anymore. The client | |
# will make a new request for the document at its new location. | |
# Example: | |
# Redirect permanent /foo http://www.example.com/bar | |
# | |
# Alias: Maps web paths into filesystem paths and is used to | |
# access content that does not live under the DocumentRoot. | |
# Example: | |
# Alias /webpath /full/filesystem/path | |
# | |
# If you include a trailing / on /webpath then the server will | |
# require it to be present in the URL. You will also likely | |
# need to provide a <Directory> section to allow access to | |
# the filesystem path. | |
# | |
# ScriptAlias: This controls which directories contain server scripts. | |
# ScriptAliases are essentially the same as Aliases, except that | |
# documents in the target directory are treated as applications and | |
# run by the server when requested rather than as documents sent to the | |
# client. The same rules about trailing "/" apply to ScriptAlias | |
# directives as to Alias. | |
# | |
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" | |
</IfModule> | |
<IfModule cgid_module> | |
# | |
# ScriptSock: On threaded servers, designate the path to the UNIX | |
# socket used to communicate with the CGI daemon of mod_cgid. | |
# | |
#Scriptsock cgisock | |
</IfModule> | |
# | |
# "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased | |
# CGI directory exists, if you have that configured. | |
# | |
<Directory "/usr/local/apache2/cgi-bin"> | |
AllowOverride None | |
Options None | |
Require all granted | |
</Directory> | |
<IfModule mime_module> | |
# | |
# TypesConfig points to the file containing the list of mappings from | |
# filename extension to MIME-type. | |
# | |
TypesConfig conf/mime.types | |
# | |
# AddType allows you to add to or override the MIME configuration | |
# file specified in TypesConfig for specific file types. | |
# | |
#AddType application/x-gzip .tgz | |
# | |
# AddEncoding allows you to have certain browsers uncompress | |
# information on the fly. Note: Not all browsers support this. | |
# | |
#AddEncoding x-compress .Z | |
#AddEncoding x-gzip .gz .tgz | |
# | |
# If the AddEncoding directives above are commented-out, then you | |
# probably should define those extensions to indicate media types: | |
# | |
AddType application/x-compress .Z | |
AddType application/x-gzip .gz .tgz | |
# | |
# AddHandler allows you to map certain file extensions to "handlers": | |
# actions unrelated to filetype. These can be either built into the server | |
# or added with the Action directive (see below) | |
# | |
# To use CGI scripts outside of ScriptAliased directories: | |
# (You will also need to add "ExecCGI" to the "Options" directive.) | |
# | |
#AddHandler cgi-script .cgi | |
# For type maps (negotiated resources): | |
#AddHandler type-map var | |
# | |
# Filters allow you to process content before it is sent to the client. | |
# | |
# To parse .shtml files for server-side includes (SSI): | |
# (You will also need to add "Includes" to the "Options" directive.) | |
# | |
#AddType text/html .shtml | |
#AddOutputFilter INCLUDES .shtml | |
</IfModule> | |
# | |
# The mod_mime_magic module allows the server to use various hints from the | |
# contents of the file itself to determine its type. The MIMEMagicFile | |
# directive tells the module where the hint definitions are located. | |
# | |
#MIMEMagicFile conf/magic | |
# | |
# Customizable error responses come in three flavors: | |
# 1) plain text 2) local redirects 3) external redirects | |
# | |
# Some examples: | |
#ErrorDocument 500 "The server made a boo boo." | |
#ErrorDocument 404 /missing.html | |
#ErrorDocument 404 "/cgi-bin/missing_handler.pl" | |
#ErrorDocument 402 http://www.example.com/subscription_info.html | |
# | |
# | |
# MaxRanges: Maximum number of Ranges in a request before | |
# returning the entire resource, or one of the special | |
# values 'default', 'none' or 'unlimited'. | |
# Default setting is to accept 200 Ranges. | |
#MaxRanges unlimited | |
# | |
# EnableMMAP and EnableSendfile: On systems that support it, | |
# memory-mapping or the sendfile syscall may be used to deliver | |
# files. This usually improves server performance, but must | |
# be turned off when serving from networked-mounted | |
# filesystems or if support for these functions is otherwise | |
# broken on your system. | |
# Defaults: EnableMMAP On, EnableSendfile Off | |
# | |
#EnableMMAP off | |
#EnableSendfile on | |
# Supplemental configuration | |
# | |
# The configuration files in the conf/extra/ directory can be | |
# included to add extra features or to modify the default configuration of | |
# the server, or you may simply copy their contents here and change as | |
# necessary. | |
# Server-pool management (MPM specific) | |
#Include conf/extra/httpd-mpm.conf | |
# Multi-language error messages | |
#Include conf/extra/httpd-multilang-errordoc.conf | |
# Fancy directory listings | |
#Include conf/extra/httpd-autoindex.conf | |
# Language settings | |
#Include conf/extra/httpd-languages.conf | |
# User home directories | |
#Include conf/extra/httpd-userdir.conf | |
# Real-time info on requests and configuration | |
#Include conf/extra/httpd-info.conf | |
# Virtual hosts | |
#Include conf/extra/httpd-vhosts.conf | |
# Local access to the Apache HTTP Server Manual | |
#Include conf/extra/httpd-manual.conf | |
# Distributed authoring and versioning (WebDAV) | |
#Include conf/extra/httpd-dav.conf | |
# Various default settings | |
#Include conf/extra/httpd-default.conf | |
# Configure mod_proxy_html to understand HTML4/XHTML1 | |
<IfModule proxy_html_module> | |
Include conf/extra/proxy-html.conf | |
</IfModule> | |
# Secure (SSL/TLS) connections | |
#Include conf/extra/httpd-ssl.conf | |
# | |
# Note: The following must must be present to support | |
# starting without SSL on platforms with no /dev/random equivalent | |
# but a statically compiled-in mod_ssl. | |
# | |
<IfModule ssl_module> | |
SSLRandomSeed startup builtin | |
SSLRandomSeed connect builtin | |
</IfModule> | |
# | |
# uncomment out the below to deal with user agents that deliberately | |
# violate open standards by misusing DNT (DNT *must* be a specific | |
# end-user choice) | |
# | |
#<IfModule setenvif_module> | |
#BrowserMatch "MSIE 10.0;" bad_DNT | |
#</IfModule> | |
#<IfModule headers_module> | |
#RequestHeader unset DNT env=bad_DNT | |
#</IfModule> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment