You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache mod_rewrite配置:隐藏MAP参数文件路径并保留其他URL参数

Apache Rewrite规则配置与RewriteMap多项目映射方案

一、单个MAP参数的规则修复

你之前的规则失效主要有两个核心问题:一是使用R=301外部重定向会暴露改写后的完整路径,不符合"隐藏路径"的需求;二是正则匹配逻辑冗余,参数拼接易出错。以下是修复后的内部改写规则(需配合原有ProxyPass配置使用):

# 启用Rewrite引擎
RewriteEngine On

# 匹配MAP=katastry的请求,内部替换为完整项目路径
RewriteCond %{QUERY_STRING} (.*)(^|&)MAP=katastry(&|$)(.*)
RewriteRule ^/qgisserver(.*)$ /qgisserver$1?%1MAP=c:/OSGEO4W/apps/qgis/bin/projects/katastry/katastry.qgs%3 [PT,NC,L]

# 原有ProxyPass配置保持不变
ProxyPass /qgisserver http://qgis.demo:8080/cgi-bin/qgis_mapserv.fcgi.exe
ProxyPassReverse /qgisserver http://qgis.demo:8080/cgi-bin/qgis_mapserv.fcgi.exe

规则关键说明:

  • PT标志:让Rewrite处理后的请求继续通过ProxyPass转发到后端FCGI程序,实现内部改写不暴露路径。
  • 正则(.*)(^|&)MAP=katastry(&|$)(.*):兼容MAP参数在URL query的开头、中间、结尾等所有位置,同时保留其他参数不丢失。
  • NC忽略大小写增强兼容性,L停止后续规则处理避免冲突。

二、多MAP参数的RewriteMap方案

使用RewriteMap完全可行,这是管理多项目别名映射最简洁可维护的方式,具体步骤如下:

  1. 创建映射文件
    在服务器上创建一个文本文件(路径可自行调整,比如/etc/apache2/qgis_map_mappings.txt),每行格式为别名 完整项目路径:
katastry c:/OSGEO4W/apps/qgis/bin/projects/katastry/katastry.qgs
m1 c:/OSGEO4W/apps/qgis/bin/projects/m1/m1.qgs
m2 c:/OSGEO4W/apps/qgis/bin/projects/m2/m2.qgs
  1. 定义RewriteMap
    在Apache全局配置(如httpd.conf)或当前VirtualHost配置中添加映射定义:
RewriteMap qgis_maps txt:/etc/apache2/qgis_map_mappings.txt
  1. 编写统一Rewrite规则
    替换原单项目规则为以下内容,自动匹配映射文件中的所有别名:
RewriteEngine On

# 匹配存在MAP参数且别名在映射文件中的请求
RewriteCond %{QUERY_STRING} (.*)(^|&)MAP=([^&]+)(&|$)(.*)
RewriteCond ${qgis_maps:%3|NOT_FOUND} !NOT_FOUND
RewriteRule ^/qgisserver(.*)$ /qgisserver$1?%1MAP=${qgis_maps:%3}%4 [PT,NC,L]

# 原有ProxyPass配置保持不变
ProxyPass /qgisserver http://qgis.demo:8080/cgi-bin/qgis_mapserv.fcgi.exe
ProxyPassReverse /qgisserver http://qgis.demo:8080/cgi-bin/qgis_mapserv.fcgi.exe

规则关键说明:

  • 第二个RewriteCond用于校验MAP参数的别名是否存在于映射文件中,不存在则跳过规则。
  • ${qgis_maps:%3}会自动根据捕获到的别名(%3)替换为对应的完整路径,无需为每个项目单独写规则。

内容的提问来源于stack exchange,提问作者Pepa Beneš

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 23:47:19