Назад | Перейти на главную страницу

ProxyPass, если RewriteCond имеет значение ИСТИНА

В файле конфигурации proxypass я написал эту строку

ProxyPass /directory/ ajp://localhost:8009/directory/

Работает отлично

В файле htaccess

RewriteRule ^seconddirectory/(.*)$ http://domain.com.localhost/directory/$1 [P]

Флаг P означает L.

Это тоже работает

Если я использую только [L], он тоже работает. В любом случае будет соответствовать ProxyPass.

Но я хочу, чтобы прокси-сервер перенаправлялся через AJP, только если referer содержит / action, если вы не можете использовать ProxyPass

Я пытался поставить условие с помощью RewriteCond

RewriteCond %{HTTP_REFERER}% !/action
RewriteRule .? - [S=2]
  RewriteRule ^seconddirectory/(.*)$ https://domain.com.localhost/directory/$1 [L]
  RewriteRule .? - [S=1]
RewriteRule ^seconddirectory/(.*)$ https://domain.com.localhost/404 [L]

Если (referer no contains / action) в этом случае пропускает 2 строки и перенаправляется на страницу 404

Если URL-адрес

https: //domain.com.localhost/seconddirectory/anything

Меня перенаправляют на https: //domain.com.localhost/404

Это верно

Если реферер содержит / действие

Меня не перенаправляют на https: //domain.com.localhost/directory/1 доллар

Это референт, откуда я родом https: //domain.com.localhost/controller.php/module/atoken/action (референт)

Любое предложение?

Вы ищете [P] флаг RewriteRule. Что-то вроде этого:

RewriteCond %{HTTP_HOST} ^alias.domain.com$ [I]
RewriteRule ^/(.*)$ http://myinternalserver.com/$1 [P,L]