web-dev-qa-db-ja.com

すべての要求を古いドメインから新しいドメインにリダイレクトします

古いドメインから新しいドメインへの移行を検討しています。

古いドメインを持っていますolddomain.comおよび新しいドメインnewdomain.com今のところ同じIPアドレスを指しています。

リクエストを処理するためにApacheサーバーを配置しています。

どうやって301 redirectすべて

olddomain.com/*

www.olddomain.com/*

newdomain.com/*

htaccessに追加する必要がある正確な正規表現または構成を取得できますか?.

私のnewdomain.comとolddomain.comの両方が同じIPから同じApacheによってサーバーされているため、 "/"リダイレクトが循環につながる可能性があるので、効率的な方法を探していました

私は試した

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_Host} ^localhost$ [OR]
    #  RewriteCond %{HTTP_Host} ^www.olddomain.com$
    RewriteRule (.*)$ http://comp16/$1 [R=301,L]
</IfModule>

そして、仮想ホストを追加してみました

RedirectMatch (.*)\.jpg$ http://comp17$1.jpg 

しかし、ブラウザーでlocalhostをコンピューター名、つまりcomp16にヒットしても、サイトはリダイレクトされません

11
Amol Ghotankar

olddomain.comホストの構成(VirtualHost)で、次のことを試してください。

Redirect permanent / http://newdomain.com/

Redirect のApacheドキュメント。これは、すべてをリダイレクトする場合に推奨される方法です。 mode_rewrite/htaccessを使用する必要がある場合、SOに関してこれに関する多くの質問があり、そのうちの1つは次のとおりです。

最初のフォルダパスがある場合、ドメインを別のドメインに301リダイレクトするにはどうすればよいですか

[〜#〜]編集[〜#〜]
simple redirects に関するApacheからの推奨:

mod_alias provides the Redirect and RedirectMatch directives, which provide a means to
redirect one URL to another. This kind of simple redirection of one URL, or a class of 
URLs, to somewhere else, should be accomplished using these directives rather than 
RewriteRule. RedirectMatch allows you to include a regular expression in your 
redirection criteria, providing many of the benefits of using RewriteRule.
17
Qben