最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux 中如何使用 RewriteRule 实现页面重定向跳转
时间:2026-09-04 18:28:47 编辑:袖梨 来源:一聚教程网
Apache mod_rewrite 实现重定向需三步:启用模块(a2enmod rewrite)、授权目录重写(AllowOverride All)、编写带[R]标志的RewriteRule(如RewriteRule ^/old.html$ /new.html [R=301,L])。
在 Linux 系统中使用 RewriteRule 实现页面重定向跳转,关键在于 Apache 的 mod_rewrite 模块是否启用,并在正确的配置位置(如虚拟主机配置、.htaccess 文件)中编写符合语法的规则。重定向本身由 RewriteRule 配合 R 标志(如 R=301 或 R=302)完成。
确认 mod_rewrite 已启用并允许重写
Apache 默认可能未启用 mod_rewrite,或在目录级配置中禁止使用 RewriteRule:
- 运行
a2enmod rewrite启用模块(Debian/Ubuntu),然后重启 Apache:systemctl restart apache2 - 检查站点配置中对应目录是否设置了
AllowOverride All(尤其在<Directory>块内),否则.htaccess中的规则不会生效 - 若直接编辑虚拟主机配置(如
/etc/apache2/sites-available/000-default.conf),可将规则写在<VirtualHost>内,无需依赖.htaccess
基本 RewriteRule 重定向语法
RewriteRule 的标准格式为:
RewriteRule Pattern Substitution [Flags]
实现跳转需搭配 R 标志指定 HTTP 状态码:
-
RewriteRule ^/old-page.html$ /new-page.html [R=301,L]→ 永久重定向(推荐用于已迁移的页面) -
RewriteRule ^/blog/(.*)$ https://blog.example.com/$1 [R=302,L]→ 临时跳转到子域,保留路径 -
RewriteRule ^/product.php?id=123$ /item/abc123 [R=301,L,QSD]→ 跳转并丢弃原始查询参数(QSD标志)
注意:^ 和 $ 表示字符串起始与结束,避免部分匹配;. 转义点号;(.*) 捕获任意路径用于后续引用($1)。
常见场景与写法示例
实际使用中常遇到路径结构变化、域名切换或参数清理需求:
-
整站换域名:在旧站配置中添加
RewriteEngine On
RewriteRule ^(.*)$ https://new-site.com$1 [R=301,L]
-
移除 .php 后缀并跳转:
RewriteCond %{THE_REQUEST} s/+(.+?).php[s?] [NC]RewriteRule ^ /%1 [R=301,L,NE]
RewriteRule ^(.+)$ $1.php [L,QSA]
-
强制 HTTPS + www(常放在主配置开头):
RewriteCond %{HTTPS} off [OR]RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]
调试与验证技巧
规则不生效?别急着改代码,先排查环境和逻辑:
- 开启重写日志(仅开发环境):
RewriteLogLevel 3和RewriteLog "/var/log/apache2/rewrite.log"(Apache 2.4+ 改用LogLevel alert rewrite:trace3) - 浏览器访问时按
Ctrl+F5强制刷新,避免 301 缓存干扰测试 - 用
curl -I http://yoursite/old-path查看返回的Location:头和状态码,确认是否真正跳转 - 确保没有其他规则提前终止(
L标志缺失导致后续规则继续执行)或冲突(如多个RewriteCond条件未满足)
相关文章
- DataWorks Data Agent 实战课(八):搭建数据质量巡检服务 09-11
- lgtm:实践指南 09-11
- DoRA:实践指南 09-11
- Codex 进阶实践:用可验收规格定义编码任务 09-11
- RoadArchitect:实践指南 09-11
- WorkflowEngine.NET:实践指南 09-11