如何在Apache中配置mod_rewrite利用RewriteMap实现基于内存库的高效重定向

夏磊小哥_2053

夏磊小哥_2053

2026-05-04

844人浏览

原创

apache中rewritemap实现高效重定向的核心是使用dbm:类型——将文本映射表编译为二进制dbm文件,由apache内存映射加载,查询极快;需启用mod_rewrite和dbm支持,定义于服务器级配置,配合rewritecond与r=301,l规则安全跳转。

如何在apache中配置mod_rewrite利用rewritemap实现基于内存库的高效重定向

Apache 中用 RewriteMap 实现基于内存库的高效重定向,核心在于绕过每次请求都读文件或执行脚本的开销,改用 int:(内置函数)或 dbm:(预编译数据库)等支持内存映射的类型。真正“基于内存库”的常用方式是 dbm: —— 它把映射表编译为二进制 DBM 文件,Apache 加载后常驻内存,查询极快,适合成百上千条静态重定向规则。

启用 mod_rewrite 并确认 RewriteMap 支持

确保模块已启用且支持 RewriteMap:

  • 检查 httpd.conf 中已取消注释:
    LoadModule rewrite_module modules/mod_rewrite.so
  • 确认 Apache 编译时启用了 DBM 支持(多数现代发行版默认包含)。可运行 httpd -M | grep rewrite 查看是否加载成功;再执行 httpd -V | grep -i dbm 看是否列出 dbm 相关路径
  • RewriteMap 指令只能在服务器级(httpd.conf 或虚拟主机配置)中定义,不能写在 .htaccess 里

准备并编译 DBM 映射文件

DBM 文件不是直接编辑的文本,需用工具生成:

Apache Superset Dashboard and SQL Exploration Skill
Apache Superset Dashboard and SQL Exploration Skill

Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。

下载
  • 先准备纯文本映射表,例如 /etc/apache2/redirects.map:
    /old-page.html    /new-page.html<br>/product?id=123   /products/widget-a<br>blog/index.php     /articles/
  • 使用 httxt2dbm 工具编译(Debian/Ubuntu 默认自带,RHEL/CentOS 可装 httpd-tools):
    sudo httxt2dbm -i /etc/apache2/redirects.map -o /etc/apache2/redirects.dbm
  • 生成后,原 .map 文件可删或保留用于后续更新(每次修改后需重新编译)

在虚拟主机中定义并调用 RewriteMap

在 <virtualhost></virtualhost> 块内配置(注意位置必须在 RewriteEngine On 之前):

  • 定义映射:
    RewriteMap redirectdb "dbm:/etc/apache2/redirects.dbm"
  • 启用重写引擎:
    RewriteEngine On
  • 添加条件与规则(推荐带状态码和终止标记):
    RewriteCond ${redirectdb:%{REQUEST_URI}|NOT_FOUND} !="NOT_FOUND"<br>RewriteRule ^(.*) ${redirectdb:%{REQUEST_URI}} [R=301,L]
  • 说明:
    – ${redirectdb:%{REQUEST_URI}|NOT_FOUND} 表示查表,未命中时返回默认值 NOT_FOUND;
    – RewriteCond 过滤掉未匹配项,避免对所有请求都跳转;
    – [R=301,L] 表示永久重定向并立即终止规则链

验证与维护要点

上线前务必测试,并建立维护习惯:

  • 重启 Apache 后,用 curl -I http://yoursite/old-page.html 检查是否返回 301 Moved Permanently 及正确 Location 头
  • 日志中如出现 map lookup FAILED,通常是路径错误、文件权限不足(Apache 进程需有读取 .dbm 文件权限),或 DBM 格式不兼容(建议统一用 ndbm 或 gdbm,避免 db)
  • 新增重定向时,只需更新文本源文件 → 重新运行 httxt2dbm → 不需重启 Apache(DBM 文件被 mmap 方式加载,变更后自动生效)
  • 若需动态映射(如从数据库实时读取),应改用 prg: 类型配合守护进程,但会牺牲部分性能和稳定性,非必要不推荐

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

940

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3092

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1016

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

909

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

474

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2816

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5272

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

827

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Apache Maven 官方安装指南
Apache Maven 官方安装指南

共0课时 | 0人学习

Apache Maven 官方用户中心
Apache Maven 官方用户中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习