Я пытаюсь создать обратный прокси-сервер, соответствующий всем URL-адресам, кроме одного в Apache 2.2. Он работает на Apache 2.4 (Centos 7), но не на Apache 2.2 (Centos 6.6) ...
# Do not modify this
<LocationMatch "^/my-website-2">
ProxyPass http://X.X.X.X:PORT/my-website-2
ProxyPassReverse http://X.X.X.X:PORT/my-website-2
(...)
</LocationMatch>
# Match every URL except the one finishing with /redirect
<LocationMatch "^/my-website(?!/redirect)">
ProxyPass http://X.X.X.X:PORT/my-website
ProxyPassReverse http://X.X.X.X:PORT/my-website
AuthType XXX
RequestHeader set XXX YYY
(...)
</LocationMatch>
# Do anothers directives with this URL only, finishing with /redirect
<Location "/my-website/redirect">
AuthType XXX
(...)
</Location>
Мой сервер ищет / var / www / html / my-website (которого не существует), когда я набираю https://my-server.com/my-website потому что регулярное выражение не соответствует ^ / my-website (?! / redirect)
Я знаю, что Apache 2.2 не понимает всех отрицательных регулярных выражений PCRE, но, похоже, существуют некоторые уловки ... См.:
Затем, Я пробую простое регулярное выражение:
<LocationMatch "/my-website(.*)">
... и, похоже, это даже не интерпретируется как PCRE ... В этом случае, если я введу /my-website(.*) в URL-адрес, он будет работать.
Такое же поведение с (From http://httpd.apache.org/docs/2.2/en//mod/core.html#locationmatch):
<LocationMatch "/(extra|special)/data">
... мне нужно напечатать http://my-server.com/(extra|special)/data в адресной строке браузера.
Нужен ли Apache HTTPd 2.2 дополнительный пакет для понимания PCRE в LocationMatch?
Установленные пакеты:
httpd.x86_64 2.2.15-60.el6.centos.6
apr.x86_64 1.3.9-5.el6_9.1 @Default_Organization_CentOS_6_CentOS_6_Update_x86_64
apr-util.x86_64 1.3.9-3.el6_0.1 @in-std
pcre.x86_64 7.8-7.el6 @Default_Organization_CentOS_6_CentOS_6_Base_x86_64
pcre-devel.x86_64 7.8-7.el6 @Default_Organization_CentOS_6_CentOS_6_Base_x86_64
Странно ...
Спасибо