apache rewrite规则怎么写?新手必看使用说明
- 主机动态
- 2025-10-24
- 4453
Apache的Rewrite规则是Apache服务器中一个非常强大的功能,它通过mod_rewrite模块实现,允许服务器对URL进行动态重写,从而实现URL美化、伪静态、重定向、访问控制等多种功能,本文将详细介绍Rewrite规则的基本概念、配置方法、常用指令及实际应用场景。
Rewrite规则基础
Rewrite规则的核心是基于正则表达式匹配URL的请求路径,并根据匹配结果将其重写为新的URL,要使用Rewrite功能,首先需要确保Apache服务器已加载mod_rewrite模块,在配置文件中,可以通过LoadModule rewrite_module modules/mod_rewrite.so指令加载模块,并确保在虚拟主机配置或目录配置中启用RewriteEngine On。
Rewrite规则的基本语法如下:

RewriteCond用于定义重写条件,RewriteRule用于定义重写规则,每个RewriteRule可以关联多个RewriteCond,只有当所有条件满足时,规则才会执行。
常用指令与Flags
-
RewriteCond
TestString可以是服务器变量、请求字符串或自定义变量,CondPattern是匹配模式,支持正则表达式和通配符。
常用服务器变量包括%{HTTP_HOST}(主机名)、%{REQUEST_URI}(请求路径)、%{QUERY_STRING}(查询字符串)等。

-
RewriteRule
Pattern是匹配的正则表达式,Substitution是替换后的字符串。
RewriteRule ^article/(d+)$ /article.php?id=$1 [L]将/article/123重写为/article.php?id=123。
-
Flags(标记)
Flags用于控制规则的行为,常用Flags包括:

- L(Last):停止处理后续规则。
- R(Redirect):强制外部重定向,返回301或302状态码。
- NC(No Case):忽略大小写。
- QSA(Query String Append):保留原有查询参数。
- F(Forbidden):禁止访问,返回403错误。
-
URL伪静态化
将动态URL转换为静态形式,提升用户体验和SEO效果。
-
HTTP跳转HTTPS
强制所有请求通过HTTPS访问:
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
-
域名重定向
将旧域名访问永久重定向到新域名:
RewriteCond %{HTTP_HOST} ^old.com$ [NC] RewriteRule ^(.*)$ https://new.com/$1 [L,R=301] -
防盗链保护
防止其他网站盗用站内资源:
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https://(www.)?yourdomain.com [NC] RewriteRule .(jpg|jpeg|png|gif)$ - [F,L] - 规则顺序:将最常用的规则放在前面,避免不必要的匹配。
- 避免过度使用:复杂的正则表达式可能影响服务器性能,尽量简化规则。
- 测试与调试:使用RewriteLog和RewriteLogLevel开启日志记录,帮助排查问题: RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 3
实际应用场景
Rewrite规则优化建议
通过合理配置Rewrite规则,可以显著提升网站的可维护性、安全性和用户体验,开发者需结合实际需求,灵活运用正则表达式和Flags,确保规则既高效又准确。