2009-08-30 9 views
1

私はwww.foo.com/wp/にブログがインストールされており、/ wp /で始まらないページに行くすべてのリクエストは、www.foo.com/wp/にリダイレクトされます(保存なしURLの)。mod_rewriteのルール、 '文字列ではない'のテスト方法

例えば:

www.foo.com/bar/baz/hello.gif  > www.foo.com/wp/ 

はまた、同時に、私は、WWWを持っているURLを必要としています。

RewriteCond %{HTTP_HOST}  !^www.foo.com [NC] 
RewriteCond %{HTTP_HOST}  !^$ 
RewriteRule ^/(.*)   http://www.foo.com/$1 [R=permanent] 

RewriteRule ^(?!wp)/(.*)$    http://%{HTTP_HOST}/wp/($2) [R=permanent] 

をしかし、私は、これは現在、完全に壊れていると思う:そうでない場合は追加現時点で

を(私のルールが混乱してきているところであるかもしれない)、私が持っています。

大変助けになりました。

答えて

1
RewriteCond %{HTTP_HOST}  !^www.foo.com [NC] 
RewriteCond %{HTTP_HOST}  !^$ 
RewriteRule (.*)    http://www.foo.com/$1 [R=permanent,L] 

RewriteRule ^(?!wp/)(.*)  http://%{HTTP_HOST}/wp/$1 [R=permanent] 
  1. 一致しているURLのパス部分は、先頭のスラッシュを持っていることはありません、あなたは.*を固定する必要はありません。
  2. Lを変更すると、最初にリダイレクトされた後に書き換えが継続されなくなります。
  3. ネガティブルックアヘッド(?!)はキャプチャ構造ではなく、($1)ではなく、$1と記述してキャプチャされたパターンを置き換えます。

編集:どうやらOPのために最後のルールは私には意味がありませんが、何/wp/で始まる例を、排除するために失敗し、動作しません。ここでは、回避策の試みです:

RewriteCond %{HTTP_HOST}  !^www.foo.com [NC] 
RewriteCond %{HTTP_HOST}  !^$ 
RewriteRule (.*)    http://www.foo.com/$1 [R=permanent,L] 

RewriteCond %{REQUEST_URI} !^/wp/ 
RewriteRule (.*)    http://%{HTTP_HOST}/wp/$1 [R=permanent] 
+0

/wp/partの場合、リダイレクトループが作成され、無限の/ wpがURLに追加されます。 – mozboz

+0

おかげでカオス。これにより、私はその後の行動を与えることになりました。 RewriteCond%{REQUEST_URI}!^/wp RewriteRule(。*)http://%{HTTP_HOST}/wp $ 1 [R = permanent] – mozboz

0

は、これらのルールを試してみてください。

RewriteCond %{HTTP_HOST} !^www.exmaple.com [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule^http://www.example.com%{REQUEST_URI} [R=301,L] 

RewriteCond %{THE_REQUEST} ^GET\ /wp/ 
RewriteRule ^wp/(.*) /$1 [R=301,L] 

RewriteRule !^wp/ wp%{REQUEST_URI} [L] 

最初のルールは、ホスト名のためです。もう1つは、外部から/wpパスプレフィックスを削除することです。もう1つは、内部リダイレクトのためにプレフィックスをもう一度追加することです。

関連する問題