0

私はプロキシパス(リバース)が得意ではありません。だから、どんな助けも素晴らしいでしょう。

これが私がやろうとしていることです:

サブディレクトリをルート URL に渡したい。

したがって、mydomain.com/xxxx を押すと、mydomain.com/ に渡されます。

これを達成するための最良の方法は何でしょうか。

理由は、現在 55 の異なるバリエーションがあるからです。そして、それぞれに ProxyPass(Reverse) 行を作成する必要はありません。

4

1 に答える 1

1

ドメインは変更されないため、これらすべてをリバース プロキシする理由がわかりません。しかし、何らかの理由でリバース プロキシを使用する必要がある場合は、正規表現パターンを指定できることProxyPassMatchを除いて、と同様に機能する whichを使用できます。ProxyPass

ProxyPassMatch ^/(.+)$ http://mydomain.com/

それでも、あなたが本当に望んでいるのは、単一のリクエストに代わってまったく新しいリクエストを送信するのではなく、内部的に書き直すことだと私には思えます:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index\.(php|html?)
RewriteRule ^(.+)$ / [L]

各「サブフォルダー」は実際には、ユーザーが URL を取得した場所 (テレビ、ラジオなど) を追跡するために使用されますが、ページの 50 以上のバージョンを管理したくありません。そのため、同じページにリダイレクトし、サブディレクトリの値を取得してその情報を使用するというアイデアがありました。理想的には、クエリ文字列があればいいのですが、それらを使用しないように言われました (私が推測している読みやすさ)

リバース プロキシを使用すると、ランディング ページからの情報が失われます。つまり、 に移動し、http://foo.com/bar1それが に逆プロキシされたhttp://foo.com/index.php場合、index.phpスクリプトはそれがプロキシされたことを認識しません/bar1(ただし、プロキシされたヘッダーとしてそれを渡すことができると思います)。ですから、そのようなものは目的を打ち負かします。上記のように内部的に書き換えると、ブラウザはすべて隠され、内部ルーティングが発生したことを認識できなくなります。すべてがブラウザから完全に隠されているため、必要に応じてクエリ文字列を渡すこともできます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?subdir=$1 [L]

したがって、これらのルールでは、誰かがフォルダーまたはファイルではない場合、内部的にルーティングされhttp://foo.com/tv、「tv」が GET パラメーター「subdir」としてスクリプトに渡されます。/tv/index.php

于 2013-09-05T16:29:30.053 に答える