2012-02-17 18 views
0

私がApacheで読んだところに基づいて、私はすべてのWebサイトで301リダイレクトを行うために提供した次の例を使用しました。301リダイレクト動的HOSTにはDOCUMENT_ROOTが含まれています

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

これは、彼らが言ったようにこれはうまくいきません。 www.domain.comを試してみるとうまくいきます。 domain.comを試してみると、私はwww.domain.com//home/www/public_html/www.domain.comになります

リダイレクトにDOCUMENT_ROOTを含めるように見えます。私は各Webサイトの個別の.htaccessを作成する方がよいですか?

ApacheとHTACCESSのどちらを実行する方が速いのですか?

+0

あなたの '.htaccess'には他にどのような書き換えルールがありますか? – ThinkingMonkey

+0

私はこの時点で何かを持っています。私はその方向に向かうべきかどうか疑問に思っています。私は今、 'httpd.conf'を使って得られた結果を見ています。 – Tim

答えて

0

代わりにこれを試してください。あなたはまだ古い結果、your previous 301 redirect is probably cached、プライベート(インコグニート)ブラウズモードで再テストを取得する場合は、RewriteBase /

RewriteEngine on 
RewriteBase/

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

を含めていることを確認します。

+0

'RewriteBase /'は欠けている成分でした。これを指摘していただきありがとうございます。 – Tim

0

httpd.confを使用すると、ファイルにアクセスすると小さなオーバーヘッドが追加されます(Apacheはすべてのディレクトリ(親ディレクトリ)をチェックして、ファイルごとに読み込みます)。

あなたがアクセスすると、httpd.confを使用する方が良いでしょう。メインコンフィギュレーションファイルにアクセスできない場合は、.htaccessを使用してください。

+0

' httpd.conf'に固執します。私はアクセス権があります。 DOCUMENT_ROOTが含まれる理由は何ですか? – Tim

+0

''ブロック内にないリダイレクトを使用している場合は、 'RewriteBase /'または先頭の '/'を追加する必要があります。 – ssh

関連する問題