htaccess経由でルートとルートのみをリダイレクトする方法は?


53

ルートのみを別のURLにリダイレクトしたいが、それらが属するすべての/ sub / directoriesを維持する(およびリダイレクトする)

例:

mysite.com/1は、mysite.com / adminがページを開くどこかにリダイレクトします

mysite.com/がmysecondsite.comにリダイレクトし、htaccessを使用した301リダイレクトでのみこれが必要です。

回答:


75

これを試して:

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

古いドメインを確認する必要がない場合(たとえば、.htaccessが配置されているディレクトリが古いドメインでのみ使用されている場合)、2行目を削除できます。


1
私の場合、私はmysite.com/にトラフィックをリダイレクトする必要はありませんfoo.mysite.comライン2に正規表現を追加する必要がありましたので:RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]マッチが正確なホストのためだったことを確認するために
jaygooby

追加の条件を使用してサーバー変数をチェックする代わりに、RewriteRule パターン内のURLパスをチェックする方が効率的です(@DaveForgacの答えのように)。REQUEST_URI
MrWhite

38

「/」を別のドメインにリダイレクトするだけの場合、これは機能します。

RewriteEngine on
RewriteRule ^$ http://www.example.com/ [R=301,L]

これは、ドメインのルートに一致し、その後に何もありません。そのため、ファイル名を指定せずにドメイン名のみをリダイレクトします。


わずかな変動が私にとってはうまくいきました。htaccessの下部に追加し、他のすべてのルールを呼び出した後、ルートドメイン(サブドメインなし)にアクセスするすべてのユーザーにウェルカムページを表示したいだけです。RewriteCond%{HTTP_HOST}!^(subdomain1 | subdomain2)\。mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC、L]
MarsAndBack

15

これはうまくいくはずです:

RedirectMatch 301 ^/$ https://example.com/

2
他のリダイレクトにmod_rewriteをまだ使用していない場合、これは(既存の回答よりも)望ましいでしょう。
-MrWhite

-3

より短い解決策:

Redirect 301 / http://mysecondsite.com/

12
これはjardelが望むことをしません。ルートだけでなく、すべてのページをリダイレクトします。
シャローズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.