1

使用されなくなった古いサイトがあり、トラフィックを別の場所にリダイレクトする必要があります。私が抱えている問題の 1 つは、サイトからアイテムを購入した以前の顧客をサポートするために、サイトの特定の領域を引き続き利用できるようにする必要があることです。

.htaccess でこれを行いたいのですが、私の正規表現の知識はかなり限られています。

基本的に、サポート パスを持たないすべてのサイト リクエストをリダイレクトしたいと思います (最後に追加のセグメントを含めることができます)。

http://www.example.com/support
http://www.example.com/support/contact
http://www.example.com/support/ticket

ただし、次の例 (多数のうちの 2 つ) は、新しいサイトにリダイレクトする必要があります。

http://www.example.com
http://www.example.com/projects

これまでのところ、次を使用して、追加のパラメーターなしでリクエストをリダイレクトする方法しか理解していません。

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

私が必要とするのは基本的に次のようなものであることを知っています:

IF url does not contain www.example.com/support
THEN redirect

regex / .htaccess での書き方がわからないだけです

どんな助けでも大歓迎です。

4

3 に答える 3

1

次のような mod_rewrite ディレクティブを使用すると簡単です。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{REQUEST_URI}  !/support/?   [NC]
RewriteRule  ^(.*)$    http://www.newsite.com/$1    [L,R=301,QSA]
于 2013-01-08T10:00:40.260 に答える
1

Apacheにmod_rewrite. それは本当に読む価値があります。

特別なケースでは、で始まるすべてのパスのリダイレクトを回避するために、ディレクティブsupportを使用できます。RewriteCond

RewriteCond %{REQUEST_URI} !^/support
RewriteRule ^(.*) http://www.newsite.com/$1 [L,R=301]
于 2013-01-08T10:00:53.393 に答える
0

これを試して:

RewriteRule ^(support/?.*)$ $1 [L]
RewriteRule ^(.*)$ http://www.newsite.com/$1 [L,R=301]

support/最初のものはリクエストを「転送」support/...し、RewriteRules の処理を​​終了します。2 つ目は、他のすべてのクエリを新しいサイトに転送する必要があります。

于 2013-01-08T09:53:42.047 に答える