Apache Rewrite 更改 URI 路径

Apache Rewrite 更改 URI 路径

我是 Apache 的新手,我对重写规则有些理解困难。

在我的测试服务器上,我有一个任意的 Apache 配置,它提供一个 Elasticsearch 实例来选择 IP。

我目前有的是:

<VirtualHost *:80>
ServerName home.mytest.server

ProxyPass /esearch http://127.0.0.1:9200
ProxyPassReverse /esearch http://127.0.0.1.9200

<Location /esearch>
    order deny,allow
    deny from all
    allow from <my IP>
</Location>

<Location /esearch/*/_search>
    #Alter URI in here
    order deny,allow
    deny from all
    allow from <my IP>
</Location>

</VirtualHost>

我想要做的是将所有请求重写为,以/esearch/*/_search在路径中包含默认值。因此/esearch/*/_search重写为/esearch/myIndex/*/_search

我该怎么做?我已经阅读了有关重写条件和规则的内容,但并没有真正理解。

答案1

尝试使用如下方法代替该ProxyPass指令:

RewriteEngine On
RewriteRule ^/esearch/([^/]+)/(_search.*) http://127.0.0.1:9200/myIndex/$1/$2 [P]
RewriteRule ^/esearch/?(.*) http://127.0.0.1:9200/$1 [P]

这将使用 mod_rewrite 与 mod_proxy (P标志)组合来重写/代理请求。

您只需要第一个<location /esearch>容器。

因此/esearch/*/_search重写为/esearch/myIndex/*/_search

但是,根据你之前的ProxyPass指示,这是代理/myIndex/*/_search。这正是 mod_rewrite 指令试图做的事情。

相关内容