如果 RewriteCond 为 TRUE,则使用 ProxyPass

如果 RewriteCond 为 TRUE,则使用 ProxyPass

在 proxypass 配置文件中我写了这一行

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

它运行完美

在 htaccess 文件中

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

P 标志暗示 L。

这也有效

如果我只使用 [L],它也能正常工作。无论如何,将与 ProxyPass 匹配。

但我希望只有当 referer 包含 /action 时,代理才会通过 AJP 重定向,否则,您无法使用 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 不包含 /action),则跳过 2 行并重定向到 404 页面

如果 URL 是

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

我将被重定向至https://domain.com.localhost/404

这是对的

如果 referer 包含 /action

我没有被重定向到https://domain.com.localhost/directory/1 美元

这是我来自的推荐人https://domain.com.localhost/controller.php/module/atoken/action(引荐人)

有什么建议吗?

答案1

你正在寻找的是[P]的标志RewriteRule。像这样:

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

相关内容