【问题标题】:Rewrite Apache Query_String重写 Apache Query_String
【发布时间】:2021-04-07 21:12:33
【问题描述】:

我有一个查询字符串 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 中的其他变量中的任何位置。

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

【问题讨论】:

    标签: apache web-services redirect url-rewriting


    【解决方案1】:

    你快到了。 您的规则不起作用的原因是您无法以 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]
    

    【讨论】:

    • RewriteRule 仍然缺少一些东西。查询在 qgis_maserv.fcgi 之后开始?然后是第二个 RewriteCond: RewriteCond %{QUERY_STRING} ^map=([A-Za-z0-9./-_]+)\.qgs$ 根据 2 RewriteCond 变量 MAP 可以只有一个文件名 .qgs (模式) RewriteRule 模式替换 RewriteRule ^cgi-bin/qgis_mapserv.fcgi\?$ /cgi-bin/qgis_mapserv.fcgi?map=/home/qgis/project/%1 [NC,QSA,R,L]
    • RewriteEngine on RewriteCond %{REQUEST_URI} ^cgi-bin/qgis_mapserv.fcgi$ RewriteCond %{QUERY_STRING} ^map=map.qgs$ RewriteRule ^cgi-bin/qgis_mapserv.fcgi\?$ /cgi -bin/qgis_mapserv.fcgi?map=/home/qgis/project/%1 [NC,QSA,R,L]
    • 为了测试重写规则,我刚刚为 MAP 变量 (map.qgs) 命名。但是重写规则仍然没有起作用。
    • RewriteEngine On #RewriteCond %{QUERY_STRING} key=value #RewriteRule (.*) /path/ [R=302,L] RewriteCond %{QUERY_STRING} ^map=/ home/qgis/project/([A-Za-z0-9./-_]+).qgs$ [NC] RewriteRule ^/?cgi-bin/qgis_mapserv.fcgi$ /cgi-bin/qgis_mapserv.fcgi?% 1 [NC,QSA,R,L]
    • @HelpOverFlow 抱歉,由于缺少通知,无法回复您的消息。请问这个问题现在解决了吗?如果你仍然需要我的帮助,你可以问。谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多