現在、2つのプロジェクトがあります。
どちらも同じリポジトリを持っていますが、2つの異なるブランチに設定されています。
私は最初のサイトの仮想ホストを持っています:
<VirtualHost *:80>
ServerName sf.local
ServerAlias www.sf.local
DocumentRoot /home/piotrek/Vhosts/sf.local/web
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9071/home/piotrek/Vhosts/sf.local/web/$1
DirectoryIndex app_dev.php
<Directory /home/piotrek/Vhosts/sf.local/web>
AllowOverride All
Require all granted
Options -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>
</Directory>
ErrorLog /home/piotrek/Vhosts/logs/sf.local-error.log
CustomLog /home/piotrek/Vhosts/logs/sf.local-access.log combined
</VirtualHost>
リクエストすると http://sf.local/ すべて正常に動作します。しかし、THEME
という名前のCookieが設定されている場合は、/ sf2.local /にユーザーを送信したいと思います。このようなもの:
RewriteCond %{HTTP_COOKIE} THEME=new [NC]
RewriteRule ^(.*)$ sf2project
Cookieがない場合に1つのサイトをサーバーに、Cookieが設定されている場合に他のサイトにmod rewriteとfastcgiプロキシを組み合わせるにはどうすればよいですか?
わかりました、それで私はそれを理解しました。
Vhostは次のようになります。
<VirtualHost *:80>
ServerName sf.local
ServerAlias www.sf.local
DocumentRoot /home/piotrek/Vhosts
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9071/home/piotrek/Vhosts/$1
<Directory /home/piotrek/Vhosts>
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
# rewrite if cookie is set to "new"
RewriteCond %{HTTP_COOKIE} THEME=new [NC]
RewriteRule ^(.*)$ sf2.local/web/$1 [QSA,L]
# rewrite to old version
RewriteRule ^(.*)$ sf.local/web/$1 [QSA,L]
</IfModule>
</Directory>
<Directory /home/piotrek/Vhosts/sf.local/web>
<IfModule mod_rewrite.c>
# local rewrite to app_dev.php if file does not exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>
</Directory>
<Directory /home/piotrek/Vhosts/sf2.local/web>
<IfModule mod_rewrite.c>
# local rewrite to app_dev.php if file does not exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>
</Directory>
ErrorLog /home/piotrek/Vhosts/logs/sf.local-error.log
CustomLog /home/piotrek/Vhosts/logs/sf.local-access.log combined
</VirtualHost>
/home/piotrek/Vhosts/sf.local/web/app_dev.php
<?php
setcookie("THEME", "new", time() + 3600);
die('OLD THEME');
/home/piotrek/Vhosts/sf2.local/web/app_dev.php
<?php
die('NEW THEME');
さて、初めて入ると http://sf.local/ 、
sf.local/web/app_dev.php
に書き換えられますProxyPassMatch
古いテーマディレクトリへのリクエストを処理しますfcgi://127.0.0.1:9071/home/piotrek/Vhosts/sf.local/web/app_dev.php
OLD THEME
が表示されますリフレッシュ後
sf2.local/web/app_dev.php
に書き換えられますProxyPassMatch
は新しいテーマディレクトリへのリクエストを処理しますfcgi://127.0.0.1:9071/home/piotrek/Vhosts/sf2.local/web/app_dev.php
NEW THEME
が表示されます書き換えは、 http://sf.local/robots.txt のような他のファイルでも機能します。 Cookieがない場合は、/home/piotrek/Vhosts/sf.local/web/robots.txt
に書き換えられ、Cookieがある場合は/home/piotrek/Vhosts/sf2.local/web/robots.txt
に書き換えられます。