2011-10-26 8 views

答えて

3

だと、ここで私が思い付いたソリューションです。サブディレクトリをリダイレクトしないため、この方法をお勧めします。

RewriteCond %{REQUEST_URI} ^/root-directory[/]? 
RewriteCond %{REQUEST_URI} !^/root-directory/+[/]? 
RewriteRule (.*) http://www.example.com/ [R=301,L] 
+2

以下のbillynoahの答えは、これのためのより良い、よりクリーンなソリューションです。 – Jestep

+0

私は別のサイトに家をリダイレクトしたいと思います。サブページではありません。 'example.com'から' newsite.com'へ –

3

多分:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/folder[/]? 
RewriteCond %{REQUEST_URI} !^/folder/subfolder[/]? 
RewriteRule (.*) /newfolder/$1 [R=301,L] 

これは/新規フォルダに/フォルダをリダイレクトするが、あなたはどのサーバーを使用している

1

を/フォルダ/サブフォルダを除外すべきか? あなたは例の使用のmod_rewriteのためにApacheを使用している場合、これ

RewriteEngine On 
    RewriteOptions Inherit 
    RedirectMatch permanent ^/folder/$ http://example.com/newfolder 
    #I haven't tested the above redirect btw^

ような何かをして、/フォルダ/ディレクトリにある.htaccessファイルにそれを置くことができる(あなたがオプションを持っている意味、Apacheの設定を変更することができます仮定AllowOverrideのその仮想ホストのすべて)

は、ここで私はちょうどこのに走ったいくつかの詳細情報http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

+1

1は、Apache vhost.confファイル内の仮想ホストからそれを使用することができますので、これは最良の答えです。私はそれを試して、それは動作します。ありがとう、cyph3r! –

27

上記のJestepの回答は "/ root-directory"をリダイレクトしますが、 "/ root-directory /"はリダイレクトできません。これは単にで固定し、簡素化することができます。

RewriteCond %{REQUEST_URI} ^/folder[/]?$ 
RewriteRule (.*) /newfolder [R=301,L] 

これは「/ /フォルダ」「/フォルダ」とリダイレクトするだけでなく、すべてのサブディレクトリを残します。

+1

私の例よりはるかに優れています。 – Jestep

+1

@PrabuGuna - スタックオーバーフローを検索する必要があります。答えが見つからない場合は質問として投稿してください。 – billynoah

1

ここでは、さまざまな方法を試してみました。私はApacheの専門家ではありませんが、ここでは私のために毎回動作するシンプルな1つのライナーがあります。私はちょうどRedirectの代わりにRedirectMatchを使用して、非常に単純な正規表現を含めて末尾のスラッシュの直前または直前にマッチを終了させます。つまり、サブディレクトリは決して一致とみなされるべきではありません。

RedirectMatch 301 ^/folder[/]?$ /newfolder

関連する問題