Apache2.4でのsymfony2アプリケーションのホスティング(fpmはprod、mod_phpはdevel)。サブドメイン(.XXX)でApache/Symfony2:少数のルート以外のものや別のホストへのリダイレクト
私たちは、メインのドメイン(.COM)に以外のURI /
と/sp(.*)
すべてをリダイレクトします。
<VirtualHost *:80>
ServerName www.lsk.xxx
RedirectMatch 301 !^(/$)|(/sp(.*))$ http://www.lsk.com/$1
# ! is not possible here.
</VirtualHost>
<VirtualHost *:80>
ServerName www.lsk.com
</VirtualHost>
は私が私が唯一/sp
ページをリダイレクトすることが可能だろうが、それは考慮に根/
をとらない一つの発現が見つかりました:残念ながら、これが可能になるだろうRedirectMatch
で一致する式を否定する方法はありません。 (その1は私のお気に入りですが、も考慮に/
をとる正規表現の書き方を??):
RedirectMatch 301 ^/((?!sp).*)$ http://www.lsk.com/$1
次我々はmod_rewrite
を行ってきました:
RewriteCond %{REQUEST_URI} ^/$ [OR]
RewriteCond %{REQUEST_URI} ^/sp
RewriteRule ^.*$ - [PT,L]
RewriteRule ^.*$ http://www.lsk.com/$1 [L,R=301]
ので/
と/sp
はパススルーを強制すると、それ以外はすべて別のホストにリダイレクトされます。しかし、それは動作しません:最後の行はまだ/
と/sp
で評価されています!書き換えログを見た後、これはsymfony2フレームワークの書き換えルール(フロントページコントローラ)によって書き換えエンジンがapp[_dev].php
(2つのルールと一致しないため転送される)を含む別の書き換えサイクルを開始するように強制します。
フレームワーク固有のリクエストuri(私の次の回答を参照)と一致する条件を追加することで、この問題をすでに「解決済み」していますが、私のインフラストラクチャにアプリケーションの知識が導入されているので、誰もがもっと良い方法を知っていますか?