2012-02-19 20 views
1

GoogleのWMTツールは2つの異なるサイトとして私のサイトを見ているので、私はwwwからwwwへの301のリダイレクトを実装したいと思います。メインサイトwww.mysite.comはFlashを使用して構築されており、wordpress blogを含むフォルダはwww.mysite.com/blog/でseperatlyに開催されています。.htaccessのワードプレスサイトの問題

Wordpressフォルダには、2つのRewriteRulesエントリとRewriteCondエントリがあるため、正しく表示されない次のスクリプトを含む.htaccessファイルがあります。それらのうちの1つを削除すべきか、それとも両方とも必要なのでしょうか?

なぜ!-fと!-dがあるのですか?彼らは何をしていますか?

私のメインFlashサイトには、www以外の301のための独自の.htaccessファイルがありますか?

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
</IfModule> 

答えて

2
<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase /blog/ 

#If the file requested is index.php from the current folder(here: blog) 
#do not do anything 
RewriteRule ^index\.php$ - [L] 

#if other requests are not regular files or directories, 
#redirect it to /blog/index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 

</IfModule> 

上記のルールのいずれかを削除しないでください。彼らは細かいです&が必要です。実際に、私はあなたにもこれを追加することをお勧め: -f-d & -lがCondPatternsの変異体である:

RewriteCond %{REQUEST_FILENAME} !-l 

rewritecond apache docsから。実際の正規表現の文字列の代わりに。

  • はトリートたTestStringは、パス名と、それが存在し、ディレクトリであるか否かをテストとして(ディレクトリ)「-d」。
  • '-f'(通常のファイル) TestStringをパス名として扱い、存在するかどうかをテストし、通常のファイルであるかどうかをテストします。
  • '-l'(シンボリックリンク) TestStringをパス名として扱い、存在するかどうかをテストし、シンボリックリンクであるかどうかをテストします。

感嘆符( '!')を前に付けると、その意味が否定されます。つまり、!-f手段は通常のファイルではありません。 non wwwwwwへのURLからリダイレクトするための


はあなたのDocumentRootであなたの.htaccessでこれを使用します。

RewriteEngine on 
RewriteBase/

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

ありがとうございます!ちょうどあなたが私が2つの.htaccessファイルを使用するべきであることを明らかにしています - ルートフォルダのそれぞれに1つ? – ubique

+0

@ubiqueはい。あなたはブログフォルダにあるものを使います。そして私はあなたのドキュメントルートに書いたものです。 – ThinkingMonkey