title: Ubuntu 16.04 can't enable .htaccess
body: <p>I'm developing a website local and just switched from Windows to Ubuntu 16.04 - Sadly my .htaccess doesn't seems to work since rewrite rules don't apply and sources can't be found.</p>
  
  <p>I activated:</p>
  
  <pre><code>sudo a2enmod rewrite  
  </code></pre>
  
  <p>rewrite_rule (shared) is listed via:</p>
  
  <pre><code>sudo apache2ctl -M
  </code></pre>
  
  <p>My website files (including my .htaccess) are located under </p>
  
  <pre><code>/var/www/html
  </code></pre>
  
  <p>My .htaccess</p>
  
  <pre><code>Options +FollowSymLinks -MultiViews
  RewriteEngine On
  RewriteBase /
  
  # Hide Index
  IndexIgnore *
  
  # Forbid accessing certain sites
  RedirectMatch 403 ^/.gitignore$
  RedirectMatch 403 ^/.htaccess$
  RewriteRule ^(?!index)(?!.*functions).*\.(php|rb|py|txt|md|sql|inc)$ - [F,L,NC]
  
  # Remove 'php' folder in URL
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^([\w-]+)/$ php/$1.php [L] 
  
  # Hide .php file ending in URL
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^([^/]+)/$ $1.php
  RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
  RewriteRule (.*)$ /$1/ [R=301,L]
  
  # Alter "php" in url to "site"
  #RewriteRule ^site/(.*) php/$1
  
  # Manage Access-Control-Allow-Origin
  #Access-Control-Allow-Origin "https://blockchain.info"
  
  # Enabling GZIP Compression
  &lt;ifModule mod_gzip.c&gt;
      mod_gzip_on Yes
      mod_gzip_dechunk Yes
      mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
      mod_gzip_item_include handler ^cgi-script$
      mod_gzip_item_include mime ^text/.*
      mod_gzip_item_include mime ^application/x-javascript.*
      mod_gzip_item_exclude mime ^image/.*
      mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
  &lt;/ifModule&gt;
  </code></pre>
  
  <p>My /etc/apache2/apache2.conf</p>
  
  <pre><code># The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
  #
  Mutex file:${APACHE_LOCK_DIR} default
  
  #
  # PidFile: The file in which the server should record its process
  # identification number when it starts.
  # This needs to be set in /etc/apache2/envvars
  #
  PidFile ${APACHE_PID_FILE}
  
  #
  # Timeout: The number of seconds before receives and sends time out.
  #
  Timeout 300
  
  #
  # KeepAlive: Whether or not to allow persistent connections (more than
  # one request per connection). Set to "Off" to deactivate.
  #
  KeepAlive On
  
  #
  # MaxKeepAliveRequests: The maximum number of requests to allow
  # during a persistent connection. Set to 0 to allow an unlimited amount.
  # We recommend you leave this number high, for maximum performance.
  #
  MaxKeepAliveRequests 100
  
  #
  # KeepAliveTimeout: Number of seconds to wait for the next request from the
  # same client on the same connection.
  #
  KeepAliveTimeout 5
  
  
  # These need to be set in /etc/apache2/envvars
  User ${APACHE_RUN_USER}
  Group ${APACHE_RUN_GROUP}
  
  #
  # HostnameLookups: Log the names of clients or just their IP addresses
  # e.g., www.apache.org (on) or 204.62.129.132 (off).
  # The default is off because it'd be overall better for the net if people
  # had to knowingly turn this feature on, since enabling it means that
  # each client request will result in AT LEAST one lookup request to the
  # nameserver.
  #
  HostnameLookups Off
  
  # ErrorLog: The location of the error log file.
  # If you do not specify an ErrorLog directive within a &lt;VirtualHost&gt;
  # container, error messages relating to that virtual host will be
  # logged here.  If you *do* define an error logfile for a &lt;VirtualHost&gt;
  # container, that host's errors will be logged there and not here.
  #
  ErrorLog ${APACHE_LOG_DIR}/error.log
  
  #
  # LogLevel: Control the severity of messages logged to the error_log.
  # Available values: trace8, ..., trace1, debug, info, notice, warn,
  # error, crit, alert, emerg.
  # It is also possible to configure the log level for particular modules, e.g.
  # "LogLevel info ssl:warn"
  #
  LogLevel warn
  
  # Include module configuration:
  IncludeOptional mods-enabled/*.load
  IncludeOptional mods-enabled/*.conf
  
  # Include list of ports to listen on
  Include ports.conf
  
  
  # Sets the default security model of the Apache2 HTTPD server. It does
  # not allow access to the root filesystem outside of /usr/share and /var/www.
  # The former is used by web applications packaged in Debian,
  # the latter may be used for local directories served by the web server. If
  # your system is serving content from a sub-directory in /srv you must allow
  # access here, or in any related virtual host.
  &lt;Directory /&gt;
      Options FollowSymLinks
      AllowOverride None
      Require all denied
  &lt;/Directory&gt;
  
  &lt;Directory /usr/share&gt;
      AllowOverride None
      Require all granted
  &lt;/Directory&gt;
  
  &lt;Directory /var/www&gt;
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
  &lt;/Directory&gt;
  
  # AccessFileName: The name of the file to look for in each directory
  # for additional configuration directives.  See also the AllowOverride
  # directive.
  #
  AccessFileName .htaccess
  
  #
  # The following lines prevent .htaccess and .htpasswd files from being
  # viewed by Web clients.
  #
  &lt;FilesMatch "^\.ht"&gt;
      Require all denied
  &lt;/FilesMatch&gt;
  
  LogFormat "%v:%p %h %l %u %t \"%r\" %&gt;s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
  LogFormat "%h %l %u %t \"%r\" %&gt;s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
  LogFormat "%h %l %u %t \"%r\" %&gt;s %O" common
  LogFormat "%{Referer}i -&gt; %U" referer
  LogFormat "%{User-agent}i" agent
  
  # Include of directories ignores editors' and dpkg's backup files,
  # see README.Debian for details.
  
  # Include generic snippets of statements
  IncludeOptional conf-enabled/*.conf
  
  # Include the virtual host configurations:
  IncludeOptional sites-enabled/*.conf
  
  # Include phpmyadmin
  Include /etc/phpmyadmin/apache.conf
  </code></pre>
  
  <p>My etc/apache2/sites-available/000-default.conf</p>
  
  <pre><code>&lt;VirtualHost *:80&gt;
  # The ServerName directive sets the request scheme, hostname and port that
  # the server uses to identify itself. This is used when creating
  # redirection URLs. In the context of virtual hosts, the ServerName
  # specifies what hostname must appear in the request's Host: header to
  # match this virtual host. For the default virtual host (this file) this
  # value is not decisive as it is used as a last resort host regardless.
  # However, you must set it for any further virtual host explicitly.
  #ServerName www.example.com
  
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html
  
  # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
  # error, crit, alert, emerg.
  # It is also possible to configure the loglevel for particular
  # modules, e.g.
  #LogLevel info ssl:warn
  
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  
  # For most configuration files from conf-available/, which are
  # enabled or disabled at a global level, it is possible to
  # include a line for only one particular virtual host. For example the
  # following line enables the CGI configuration for this host only
  # after it has been globally disabled with "a2disconf".
  #Include conf-available/serve-cgi-bin.conf
  
  AccessFileName .htaccess
  
  &lt;Directory "/var/www"&gt;
    AllowOverride All
  &lt;/Directory&gt;
  &lt;/VirtualHost&gt;
  # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
  </code></pre>
  
  <p>I also applied rights via </p>
  
  <pre><code>sudo chmod -R 777 /var/www/html
  </code></pre>
  
  <p>and restarted apache via</p>
  
  <pre><code>sudo service apache2 reload
  sudo service apache2 restart
  </code></pre>
  
  <p>but also restarted the computer at some point.</p>
  
  <p>After all this .htaccess still won't get loaded, so what have I forgotten?</p>
  
  <p>Cheerz!</p>