如何获得mod重写条件“如果变量不是”起作用

时间:2019-04-03 11:43:09

标签: mod-rewrite apache2 oracle-apex

我已经安装了Oracle Apex,并尝试使用apache反向代理部署多个应用程序,但是我无法获得apache来将虚拟主机限制为一个应用程序ID。

虚拟主机

    <VirtualHost *:80>
     ServerName www.example.com
     ServerAlias test.example.com
     ServerAlias example.com

     ProxyPass / http://127.0.0.1:8080/ords/
     ProxyPassReverse / http://127.0.0.1:8080/ords/

     RewriteCond %{QUERY_STRING} !^p=101$
     RewriteRule ^/$ f?p=101 [L,P]

    <Location /i>
       ProxyPass http://127.0.0.1:8080/i
       ProxyPassReverse http://127.0.0.1:8080/i
    </Location>

</VirtualHost>

我要尝试做的是,如果变量p不是101,我希望代理重定向用户/ f?p = 101,以便仅可以访问该虚拟主机上我想要的应用程序,而不能访问其他应用程序,但是我可以不会工作。

如果我执行/ f?p = 102,它将显示其他应用程序,而不会再次将我重定向到应用程序101。

有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方法:

 RewriteCond %{QUERY_STRING} ^f?p=100 [OR]
 RewriteCond %{QUERY_STRING} ^f?p=4550 [OR]
 RewriteCond %{QUERY_STRING} ^f?p=4000
 RewriteRule ^/(.*) https://%{HTTP_HOST}/f?p=101:1 [R]

所以我在做的是检查我们是否获得需要过滤的应用程序ID。 之后,我将页面重定向到应用程序的原始页面。