🔧 一、基础语法结构
1. 文件作用与位置
· .htaccess是Apache的目录级配置文件,用于覆盖全局设置(如URL重写、访问控制、错误页面定制),无需重启服务器即可生效。
· 文件需放置在网站根目录或子目录中,规则会递归应用到子目录。
2. 正则表达式基础
· 规则依赖正则匹配:
· ^:匹配字符串开始(如 ^user 匹配以"user"开头的URL)。
· $:匹配字符串结束(如 .html$ 匹配以.html结尾的URL)。
· (.*):捕获任意字符(用于动态参数提取)〔1〕〔5〕。
· [0-9]+:匹配一个或多个数字(如提取ID值)〔3〕。
⚙️ 二、核心指令详解
1. RewriteEngine
启用重写引擎,是URL重写的必备指令:
apache
RewriteEngine On # 开启重写功能
2. RewriteCond
定义规则生效条件,需在RewriteRule前使用:
apache
RewriteCond %{REQUEST_FILENAME}-f # 请求的不是真实文件
RewriteCond %{HTTP_HOST}^www\.example\.com [NC] # 域名非<a>www.example.com</a>(忽略大小写)
常用测试变量:
· %{REQUEST_FILENAME}:请求的文件路径
· %{HTTP_HOST}:访问的域名
· %{HTTPS}:是否为HTTPS请求(off表示HTTP)
条件类型:
· !-f:非文件
· !-d:非目录
· -s:文件存在且非空。
3. RewriteRule
定义重写规则:
apache
RewriteRule ^user/([0-9]+)$ profile.php?id=$1 [L,R=301] # 将/user/123重写为profile.php?id=123
关键参数:
· [L]:停止处理后续规则。
· [R=301]:301永久重定向。
· [QSA]:保留原始查询字符串(如?page=2)。
· [NC]:忽略大小写。