0

ルート ドメイン (http://domain[dot]com) からサブ ドメイン (http://sub.domain[dot]com) に大量のコンテンツを移動した Web サイト (WordPress マルチサイト) があります。 . ここで、ルート サイト (http://domain[dot]com/page) のすべてのページにユーザーを新しい場所 (http://sub.domain[dot]com/page) に誘導する必要があります。しかし...そして、これが私が本当に苦労しているビットです...影響を与える必要のない別の「geo-redirect」があるため、この書き換えからルートURLを省略する必要があります。したがって、私がする必要があるのは、親/メインドメインではなく、それらのサブページのみをリダイレクトすることです。

これが私が取り組んでいるものの(最近の反復)です:

# ignore the home page, not working :(
RewriteCond %{HTTP_HOST} !^(.*)\.routetogreatness\.com$ [NC]
# redirect all the sub pages, works
RewriteCond %{HTTP_HOST} ^routetogreatness.com [NC]
RewriteRule ^(.*)$ http://global.routetogreatness.com/$1 [L,R=301]

どんな助けでも非常に感謝しています。

4

2 に答える 2

0

あなたが探しているのは、要求されたファイルがファイル名ではないかどうかを確認する条件だと思います。それが何RewriteCond %{REQUEST_FILENAME} !-fです。%{REQUEST_FILENAME}(リクエストに基づいて、サーバー上のファイルへの絶対パスだと思います) がファイルでない場合は trueです。(注: この場所のサーバーにアクセスできないため、このコードはテストしていませんが、動作するはずです。)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301]

別の解決策は、要求された URL にスラッシュが含まれている場合にのみ URL を書き換えることです。リダイレクトしますが、リダイレクトdomain.com/folder/index.phpしませんdomain.com/index.php

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.+)$
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301]
于 2013-07-14T18:44:44.253 に答える
0

さて、上記の解決策はうまくいきませんでした。これは、サブ/子ページではうまく機能しましたが、親ページとホームページ (たとえば、ドメイン/ニュースなど) をスキップすることが判明したためです。 '最終的にこれで実行しました:

RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301]

これは、ホームページまたはルート URL をスキップして、他のすべて (404 も含む) をリダイレクトするだけです。

于 2013-07-15T12:52:58.007 に答える