2012-03-04 4 views
1
RewriteEngine On 

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

http://www.new.domain.comと入力すると、http://new.domain.comにリダイレクトされません。あなたのRewriteCondでの正規表現の構文は少し壊れているRewriteCondはwwwを削除できません。サブドメインURL

.htaccessファイルを右のフォルダにある(それはより多くののRewriteCond年代を持っており、彼らが働く)

+1

奇妙なことに...あなたのRewriteCondで少し壊れた正規表現の構文にもかかわらず、この_should_は機能します。この前に.htaccessファイルに他のRewriteRulesがありますか?もしそうなら、多分何らかの妨げになっているかもしれません(例えば、[L]フラグを探してください...) –

+0

ファイルの先頭に...何故、正規表現が壊れているのでしょうか? –

+1

rootにphpinfo()を追加して、http_HOSTのどの値が報告されているかを確認するために 'http:// www.new.domain.com/phpinfo.php'を実行しましたか?あなたのブラウザは301をキャッシュしていて、クライアント側でローカルに実行している可能性があります。 – TerryE

答えて

2

www.new.domain.comに厳密に等しいかどうかをテストするための正しい方法(違いまで)場合のいずれか

RewriteCond %{HTTP_HOST} ^www\.new\.domain\.com$ [NC] 

又は前記

RewriteCond %{HTTP_HOST} =www.new.domain.com [NC] 

、それらのエラーべきはあなたの書き換えルールの動作を停止しません。元のRewriteCondはwww.new.domain.comと一致します。ちょうど良いものもあります(wwwXnewYdomainZcomFOOBARなど)。実際に、私は私自身の.htaccessファイル内のルールの非常によく似たセットを持って、彼らはうまく動作:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^vyznev\.net$ 
RewriteCond %{HTTP_HOST} ^(www\.)?vyznev\.net$ [NC] 
RewriteRule ^(.*) http://vyznev.net/$1 [NS,L,R=permanent] 

はあなたのコードと私の間の違いのほとんどは、純粋に化粧品です。 RewriteBase指令がない場合は、私が見ることができる唯一の潜在的に重大な問題です。後で潜在的な問題を避けるためだけに、1つを追加する必要があります。それでも、私が言うことができる限り、あなたが期待しているURLにないかもしれないとしても、少なくとものリダイレクトを得ることを止めてはいけません。

+0

RewriteBaseを追加すると問題は解決しました;) –

関連する問題