Last updated on October 5, 2020 by Dan Nanni
.htaccess
file to configure something for my website running on Apache web server. But the .htaccess
file I placed in the website's document root directory is not working. How can I enable .htaccess
in Apache web server?
An .htaccess
file is a directory-level configuration file for Apache HTTP server, which allows one to override the web server's system-wide settings without modifying the global configuration file (e.g., httpd.conf
or apache2.conf
). Things like per-directory access control, password protection, URL redirection or hot link prevention can be configured in the .htaccess
file.
An .htaccess
file can be placed in the website's document root folder and/or any of its subfolders. Especially in a shared web hosting environment, where multiple websites are provisioned on a single web server, an .htaccess
file is a convenient way for each website to override global web server settings without root privilege.
If you want to use the .htaccess
file in Apache HTTP server, you need to explicitly enable it from the web server's main configuration file. Otherwise, your .htaccess
file will be ignored.
Here is how to enable .htaccess
for Apache HTTP server.
.htaccess
on CentOS or FedoraOpen a global Apache configuration file with a text editor.
$ sudo vi /etc/httpd/conf/httpd.conf
Look for <Directory></Directory>
directives. Each section enclosed by <Directory>
and </Directory>
defines web server settings for a particular document root directory and all its subdirectories. Within the section, replace AllowOverride None
with AllowOverride All
. This will activate .htaccess
for the corresponding directory tree.
After modifying the configuration, restart Apache.
$ sudo systemctl restart httpd
$ sudo service restart httpd
.htaccess
on Debian or UbuntuOpen a global Apache configuration (/etc/apache2/apache2.conf
) or site-specific configuration (/etc/apache2/sites-available/mywebsite.conf
) with a text editor.
Look for <Directory></Directory>
directives. In the section surrounded by <Directory "directory-path">
and </Directory>
, replace "AllowOverride None" with "AllowOverride All". This will enable .htaccess
for the whole directory tree in directory-path
. For example, the following will enable .htaccess
for /var/www
and all its subdirectories.
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
After modifying the configuration, restart Apache:
$ sudo service apache2 restart
Once .htaccess
is enabled, modifying .htaccess
content does not require restarting Apache. Any change made in .htaccess
will take immediate effect. As a side effect, every HTTP request involves file system access for every .htaccess
file in the .htaccess
-enabled directory tree. Thus enabling .htaccess
comes with a performance hit in the web server.
This website is made possible by minimal ads and your gracious donation via PayPal or credit card
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.
Xmodulo © 2021 ‒ About ‒ Write for Us ‒ Feed ‒ Powered by DigitalOcean