2012-03-05 35 views
0

私が必要とするのは、特定のディレクトリから親ディレクトリのインデックスファイルにすべてをリダイレクトすることです。ブラウザのURLも同様に変更する必要があります。これはどうすればいいですか?私はバリエーションを試しましたmod_rewrite - 親ディレクトリに簡単にリダイレクト

RewriteRule ^(.*)/?$ ../ [R] 

これはエラーと実際のシステムパスを表示しています!

答えて

3

最も簡単に絶対のhttp URLを使用することによって達成:

# We assume this is in .htaccess inside the directory to be redirected 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/parent 
RewriteRule ^(.*)?$ http://%{HTTP_HOST}/parent [R=301,QSA,L] 

注意、QSAは、クエリ文字列を維持するために追加されましたが、それは場合は削除することができますあなたはそれを望んでいません。

+0

ありがとう、ちょっとしたことですが、絶対URLを使用しています。また、親ディレクトリはURL書き換えも使用しているので、あなたが書き込んだURLによってリダイレクトされるとRewriteRule ^(。*)/?$ index.php?= $ 1 [QSA、L]を使用するので、httpにリダイレクトされます:// host/parent /?where = child – DMIL

+0

@DMILリライトループを禁止するために、上に追加されたRewriteCond。 –

+0

RewriteCondでは動作しません.RewriteCond行なしで動作しますが、絶対URLは大きな問題です。また、子の末尾のスラッシュを省略すると、動作が異なり、親からのリダイレクトが表示されます。 **編集:実際には、RewriteCond行には何の効果もないようです。 – DMIL

0

あなたはに、RedirectMatchを使用することができます。

RedirectMatch 301 ^/child/?$ http://example.com/ 
+0

私はこれをどこに置くのですか?親ディレクトリの.htaccess?正確には、親ディレクトリの書き換えルールの前か後で?また、動作しません。リダイレクト先のURLは、http:// hostname/parentの代わりにhttp:// hostname/parent/childです。 – DMIL

+0

現在のディレクトリにあるはずです。 .htaccessファイルのどこにあるかは関係ありません。 –

関連する問題