web-dev-qa-db-ja.com

RewriteCondがTRUEの場合のProxyPass

Proxypass構成ファイルで私はこの行を書きました

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

それは完璧に動作します

Htaccessファイルで

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

PフラグはLを意味します。

これも機能します

[L]だけを使用すればそれも機能します。とにかく、ProxyPassと一致します。

しかし、プロキシパスを使用できない場合は、リファラーに/ actionが含まれている場合にのみ、AJPを介してプロキシリダイレクトが必要です。

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]

(リファラーnoに/ actionが含まれている)場合、この場合は2行をスキップし、404ページにリダイレクトされます

URLが

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

https://domain.com.localhost/404 にリダイレクトされます

これは正しいです

リファラーに/ actionが含まれている場合

https://domain.com.localhost/directory/ $ 1にリダイレクトされても問題ありません

これは私が出身のリファラーです https://domain.com.localhost/controller.php/module/atoken/action (リファラー)

なにか提案を?

3
Jvrq

あなたが探しているのは[P]RewriteRuleのフラグ。このようなもの:

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