繁体   English   中英

重写 Apache Query_String

[英]Rewrite Apache Query_String

我有一个查询字符串 URL: http://localhost/cgi-bin/qgis_mapserv.fcgi?map=/home/qgis/project/map.qgs。 我想在变量 MAP 中隐藏 map.qgs 路径。 除了 map 变量外,还有一些变量(版本、请求、服务等)。 这是我需要的:

重写规则:模式:^cgi-bin/qgis_mapserv.fcgi?map=map.qgs&(. )$ 替换:^cgi-bin/qgis_mapserv.fcgi?map=/home/qgis/project/map.qgs&(. )$

在下面找到我不成功的尝试:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/cgi-bin/qgis_mapserv.fcgi$
RewriteCond %{QUERY_STRING} ^map=([A-Za-z0-9.-_]+)$
RewriteRule ^cgi-bin/qgis_mapserv.fcgi?(.*)$ cgi-bin/qgis_mapserv.fcgi?$1

注意:map 变量可以出现在模式 uRL 中的其他变量中的任何位置。

我想知道我在上面的代码中缺少什么

你快到了。 您的规则不起作用的原因是您无法以 RewriteRule 的模式测试 queryString。

您需要将规则的模式更改为

  RewriteRule ^cgi-bin/qgis_mapserv.fcgi$

通过此更改,您的 htaccess 规则将如下所示:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/cgi-bin/qgis_mapserv.fcgi$
RewriteCond %{QUERY_STRING} ^map=([A-Za-z0-9./-_]+)/map.qgs$
RewriteRule ^/?cgi-bin/qgis_mapserv.fcgi$ /cgi-bin/qgis_mapserv.fcgi?%1 [R,L]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM