htaccess是Apache服务器使用的分布式配置文件,主要用于配置单个目录下的网站规则,比如伪静态规则、访问权限控制、错误页面定义等。在linux系统中,htaccess文件的位置和Apache的部署方式、虚拟主机配置直接相关。

默认存放位置规则
htaccess文件的核心规则是放在需要生效配置的目录之下,通常最常见的位置是网站的根目录。比如默认的Apache网站根目录是/var/www/html,那么针对该目录下所有页面的配置,htaccess就放在/var/www/html/.htaccess。
如果网站使用了虚拟主机,那么htaccess的位置对应虚拟主机的DocumentRoot目录。比如虚拟主机配置中DocumentRoot设置为/home/www/example,那么htaccess路径就是/home/www/example/.htaccess。
查找htaccess的方法
如果不确定自己的网站htaccess应该放在哪里,可以通过以下两种方式查找:
1. 查看Apache虚拟主机配置
先找到Apache的虚拟主机配置文件,通常存放在/etc/apache2/sites-available/或者/etc/httpd/conf.d/目录下,查看对应站点的DocumentRoot参数,该参数对应的目录就是网站根目录,htaccess放在这个目录下即可。
可以通过以下命令快速查看所有虚拟主机的根目录:
# Ubuntu/Debian系统 grep -r "DocumentRoot" /etc/apache2/sites-available/ # CentOS/RHEL系统 grep -r "DocumentRoot" /etc/httpd/conf.d/
2. 通过phpinfo查看
如果网站使用PHP开发,可以创建一个phpinfo页面,查看DOCUMENT_ROOT参数,该值就是当前站点的根目录,htaccess放在这个路径下即可生效。
<?php phpinfo(); ?>
注意事项
- htaccess是隐藏文件,文件名以
.开头,在linux中通过ls -a命令才能看到,如果是手动创建,需要确保文件名正确,不要写成htaccess.txt等格式。 - htaccess的作用范围是当前目录及其所有子目录,如果需要针对某个子目录单独配置规则,可以在子目录下再创建独立的htaccess文件。
- 要让htaccess生效,需要确保Apache配置中开启了
AllowOverride选项,通常设置为AllowOverride All,否则htaccess中的规则会被忽略。
配置示例
以下是一个简单的htaccess配置示例,用于开启网站伪静态,将index.php隐藏:
# 开启重写引擎
RewriteEngine On
# 如果请求的文件或目录不存在,重定向到index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
将该文件保存到网站根目录下,就可以实现对应的伪静态功能。