私はこれを理解しようとずっと努力してきました。これが繰り返しの質問である場合はお詫び申し上げますが、適切な解決策が見つからないようです。
私が達成しようとしていることは次のとおりです。
URLが与えられたdev-<sub>.example.com/resources/path/to/resource
場合、それがファイルを生成するかどうかsub
に移動します(404を処理できます)。/var/www/devEx_<sub>/override/resources/path/to/resource
/var/www/devEx_<sub>/main/resources/path/to/resource
各個人を手動で追加するソリューションは理解sub
できますが、ワイルドカードまたは後方参照を使用してそれを行う方法を理解できません。
いじってみましたが、リソースをチェックするためにに表示される部分をVirtualDocumentRoot
取得できません。devEx_<sub>
DOCUMENT_ROOT
これに似たソリューションを使用してみました[ mod_rewriteregex(too many redirects) ]が、常に。を台無しにしREQUEST_URI
ます。
私は過去にこのようなものを使ってみました:
RewriteCond $1 (^resources/.*)
RewriteCond %{DOCUMENT_ROOT}/override%{REQUEST_URI} -f
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/override%{REQUEST_URI} [QSA,L]
RewriteCond $1 (^resources/.*)
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/main%{REQUEST_URI} [QSA,L]
また、Apache / Mod_rewriteの使用についてもっと理解したいので、これまたはいくつかのデバッグ手法で役立つ優れたテクニカルガイドまたはチュートリアルの提案がある場合(これらの書き換えルールをデバッグする方法がわからないため) 、知識をいただければ幸いですので、共有してください!
編集
私の試験についての詳細。
私のVirtualDocumentRoot
ソリューションでは、適切なディレクトリにルーティングできましたが、オーバーライドルールを実行するためにディレクトリをドキュメントルートとして設定できませんでした。
このソリューション[ mod_rewriteregex(too many redirects) ]ではDocumentRoot
、confのをに設定し、ディレクトリ内のファイルに/var/www
次の行を配置しました.htaccess
RewriteCond %{HTTP_HOST} ^dev-([^.]+)\.example\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/devEx_%1 -d
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule .* /devEx_%1/$0 [L]
ただし、ご想像のとおり、これはに追加さdevEx_<sub>
れ%{REQUEST_URI}
ます。