Mod rewrite 如何获得mod rewrite条件“;如果变量不是";工作

Mod rewrite 如何获得mod rewrite条件“;如果变量不是";工作,mod-rewrite,apache2,oracle-apex,Mod Rewrite,Apache2,Oracle Apex,我已经安装了OracleApex并尝试使用apache反向代理部署多个应用程序,但我无法让apache将虚拟主机限制为一个应用程序id 虚拟主机 <VirtualHost *:80> ServerName www.example.com ServerAlias test.example.com ServerAlias example.com ProxyPass / http://127.0.0.1:8080/ords/ Pr

我已经安装了OracleApex并尝试使用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>

服务器名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/
重写cond%{QUERY_STRING}^p=101$
重写规则^/$f?p=101[L,p]
ProxyPasshttp://127.0.0.1:8080/i
ProxyPassReversehttp://127.0.0.1:8080/i
我想做的是,如果变量p不是101,我希望代理重定向用户/f?p=101,这样只有我想要的虚拟主机上的应用程序可以访问,而不是其他应用程序,但我无法工作

如果我这样做/f?p=102,它将显示另一个应用程序,而不会再次将我重定向到应用程序101

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

我找到了解决方案:

 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。
之后,我将页面重定向到应用程序的原始页面。

为我提供必须重定向的示例www.example.com/f?p=102::::->www.example.com/f?p=101 www.example.com/f?p=103:::::->www.example.com/f?p=101 www.example.com/f?p=104:::::::::::::::->www.example.com/f?p=101所以如果变量p不是101,我希望它是重定向到你可以试试这个。重写cond%{QUERY_STRING}^p=101$RewriteRule^/(*)f?p=101[p]