基本的には、サイト移行の作業で複数のリダイレクトを配置しています。ただし、私の職場では、テスト/開発/運用用に複数のサーバーがあります。通常、ドメインは次のようにマッピングされます。
http://<accountname>.(test|dev|).<maindomain>.edu.au
内部リダイレクトの場合、適切なサーバーへの参照を維持することに問題はありません。ただし、サイト上の別のアカウントへの移行を実行すると、リダイレクトが適切なサーバーにとどまるようにすることが少し難しくなります。
たとえば、「foobar」という会社の「foo」アカウントを「bar」にリダイレクトすることにしたとします。
Foo's production URL: http://foo.foobar.edu.au
Foo's test URL: http://foo.test.foobar.edu.au
Foo's development URL: http://foo.dev.foobar.edu.au
Bar's production URL: http://bar.foobar.edu.au
Bar's test URL: http://bar.test.foobar.edu.au
Bar's development URL: http://bar.dev.foobar.edu.au
基本的に、へのすべてのリクエストがのドメインfoo
に適切にマップされるように、htaccess ファイルを作成する必要があります。bar
test/dev/production
現時点でこれを達成した方法は、RewriteCond を使用して、リダイレクト用のサーバー情報の一部を取得することです。
RewriteCond %{SERVER_NAME} ^foo(\.test|\.dev|\.)foobar.edu.au
RewriteRule ^(.*)$ http://bar%1foobar.edu.au/$1
これは、一括リダイレクトでうまく機能します。ただし、もう少し工夫する必要がある場合 (つまり、すべてのfoo
のディレクトリがまったく同じパスに一致するわけではなく、個々のリダイレクトが必要な場合)、新しいbar
ものごとに同じものをコピーする必要があることがわかります(に適用できないため)複数のデータをキャプチャしながら。RewriteCond
RewriteRule
RewriteCond
RewriteRule
例えば:
# resources/data has been duplicated on bar
RewriteCond %{SERVER_NAME} ^foo(\.test\.|\.dev\.|\.)foobar.edu.au
RewriteRule ^(resources/data/.+)$ http://bar%1foobar.edu.au/$1 [R=301,L]
# the rest of foo just points to a static page on bar
RewriteCond %{SERVER_NAME} ^foo(\.test\.|\.dev\.|\.)foobar.edu.au
RewriteRule ^ http://bar%1foobar.edu.au/migration/foo.cfm [R=301,L]
# there are actually more, but removed for brevity
TL;DR変数
のセクションをキャプチャし、それを複数の 's 全体で使用する簡単な方法はありますか?SERVER_PATH
RewriteRule
私は mod_rewrite の初心者なので、助けていただければ幸いです。
ありがとう、
J