【发布时间】:2022-06-13 22:28:02
【问题描述】:
我想改变这个:
https://<our server>/cgi-bin/mapserv?map=/usr/share/mapserv/mapfile.map&service=wms&version=1.3.0&request=GetCapabilities
到这里:
https://<our server>/wms?service=WMS&version=1.3.0&request=GetCapabilities
所以我启用了 apache2 mod-rewrite 并根据 Mapserver 文档使用以下规则创建了一个 .htaccess 文件:
RewriteEngine on
RewriteRule wms?(.*) /cgi-bin/mapserv?map=/usr/share/mapserv/mapfile.map&$1
我还将此规则调整为多种变体,以尝试使其正常工作,但无济于事。
第一个链接按预期返回 xml。
第二个链接返回此错误:
mapserv(): Web application error. Traditional BROWSE mode requires a TEMPLATE in the WEB section, but none was provided.
我有一个运行重写的错误日志,示例跟踪如下:
[Thu Jun 09 18:54:22.033848 2022] [rewrite:trace3] [pid 40275:tid 140188000974592] mod_rewrite.c(483): [client <browser IP>:62351] <browser IP> - - [<our server>/sid#7f80151c0340][rid#7f80147130a0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/wms -> wms
[Thu Jun 09 18:54:22.033855 2022] [rewrite:trace3] [pid 40275:tid 140188000974592] mod_rewrite.c(483): [client <browser IP>:62351] <browser IP> - - [<our server>/sid#7f80151c0340][rid#7f80147130a0/initial] [perdir /var/www/html/] applying pattern 'wms?(.*)' to uri 'wms'
[Thu Jun 09 18:54:22.033864 2022] [rewrite:trace2] [pid 40275:tid 140188000974592] mod_rewrite.c(483): [client <browser IP>:62351] <browser IP> - - [<our server>/sid#7f80151c0340][rid#7f80147130a0/initial] [perdir /var/www/html/] rewrite 'wms' -> '/cgi-bin/mapserv?map=/usr/share/mapserv/gni_wms.map&'
[Thu Jun 09 18:54:22.033870 2022] [rewrite:trace3] [pid 40275:tid 140188000974592] mod_rewrite.c(483): [client <browser IP>:62351] <browser IP> - - [<our server>/sid#7f80151c0340][rid#7f80147130a0/initial] split uri=/cgi-bin/mapserv?map=/usr/share/mapserv/gni_wms.map& -> uri=/cgi-bin/mapserv, args=map=/usr/share/mapserv/gni_wms.map
[Thu Jun 09 18:54:22.033877 2022] [rewrite:trace2] [pid 40275:tid 140188000974592] mod_rewrite.c(483): [client <browser IP>:62351] <browser IP> - - [<our server>/sid#7f80151c0340][rid#7f80147130a0/initial] [perdir /var/www/html/] trying to replace context docroot /var/www/html with context prefix
[Thu Jun 09 18:54:22.033883 2022] [rewrite:trace1] [pid 40275:tid 140188000974592] mod_rewrite.c(483): [client <browser IP>:62351] <browser IP> - - [<our server>/sid#7f80151c0340][rid#7f80147130a0/initial] [perdir /var/www/html/] internal redirect with /cgi-bin/mapserv [INTERNAL REDIRECT]
我认为重定向没有处理 GET 参数是否正确?
这意味着我的规则是错误的,因此将错误的请求字符串传递给 mapserver 从而导致错误?
【问题讨论】:
标签: apache mod-rewrite mapserver