Я новичок в 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
.
Как мне это сделать? Я читал об условиях и правилах перезаписи, но это не совсем понятно.
Попробуйте вместо 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
flag) для перезаписи / проксирования запроса.
Вам нужен только ваш первый <location /esearch>
контейнер.
Так
/esearch/*/_search
переписан на/esearch/myIndex/*/_search
Однако, согласно вашему ранее ProxyPass
директива, это проксированный к /myIndex/*/_search
. Это то, что пытается сделать директива mod_rewrite.