2016-05-10 20 views
1

Webルートディレクトリにアクセスするユーザーをサブディレクトリにリダイレクトしようとしています。.HTACCESSすべてのファイルをルートディレクトリからサブディレクトリにリダイレクト

が、私はこれをしようとしています:それは仕事をdoesntの、

// 301しかしディレクトリ全体

RedirectMatch 301 /(.*) /1.0/projects/navigator/$1 

をリダイレクトしますが、サブディレクトリのパスを繰り返し、数回:

[my_domain] /1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0 /projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigato/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/navigator/1.0/projects/

これを行う方法?事前に

おかげで

+0

私はリダイレクトの代わりに書き換えルールも同じです。 Thx –

答えて

1

ルートディレクトリ.htaccessファイルでfollwoingコードを入れて

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{REQUEST_URI} !^/1.0/projects/navigator/ 
# the above line will exclude the same sub directory from the rule below so 
# no looping as what happened with you 
RewriteRule ^(.*)$ /1.0/projects/navigator/$1 [R=302,L] 
+0

アドレスバーのURLを変更しても実際のリダイレクトではありません。相対URLを使用するリソースは機能しません。たぶんそれはリライトから期待されるだろうが、リダイレクトの場合であってはならない。実際の(目に見えない)書き換えが最も好ましい解決策になります。 –

+0

www条件もちょっと難しいです... –

1

あなたはにリダイレクトされているパス除外することがあります。それ以外の場合はあなたが得る

RedirectMatch 301 /((?!1.0/projects/navigator).*) /1.0/projects/navigator/$1 

/1.0/projects/navigator/ もパターン/(.*)と一致してリダイレクトループエラーが発生する要求を同じ宛先に複数回送信する。

これをテストする前に、ブラウザのキャッシュをクリアしてください。

+0

これはまだ2つの最後のセグメント(/ projects/navigator /)をループしているので実際にはうまくいきません –

+0

@henrikhansen奇妙なことに、このコードはApacheサーバーで正常に動作します。 – starkeen

+0

ブラウザのキャッシュをクリアします。 – starkeen

関連する問題