ドメイン転送で結局 mod_rewrite を使った
SSL 付きのあるサイトのドメインを引っ越すことになりました。最初 mod_alias の機能である Redirect を使おうと思い,
NameVirtualHost * <VirtualHost *:80> ServerName old-domain.com Redirect / http://new-domain.com/ </VirtualHost> <VirtualHost *:443> ServerName old-domain.com Redirect / https://new-domain.com/ </VirtualHost> <VirtualHost *:80> ServerName new-domain.com ... </VirtualHost> <VirtualHost *:443> ServerName new-domain.com SSLEngine on ... </VirtualHost>
みたくしたら,Apache に怒られてしまいました。NameVirtualHost は複数のポートにたいしてうまくないのです(あるポートに対してだけ名前によるバーチャルホスト,ということならできる)。
んー,困った。ということでこちらのサイトを参考に結局 mod_rewrite で対処することにしました。設定ミスったら怖いんで手を出したくなかったんですが。
#NameVirtualHost * # disabled ! <VirtualHost _default_:80> RewriteEngine on %{HTTP_HOST} ^old-domain\.com(:80)? RewriteCond ^/(.*) http://new-domain.com/$1 [R=301,L] </VirtualHost> <VirtualHost _default_:443> RewriteEngine on %{HTTP_HOST} ^old-domain\.com(:443)? RewriteCond ^/(.*) https://new-domain.com/$1 [R=301,L] </VirtualHost>
301 (Moved Permanently) で検索クローラにたいしてもよしなに,というところがミソらしいです。