2012-02-11 18 views
1

私は.htaccessというファイルをmod_rewriteを使用して、古いWebサイトのURLを新しいWebページの同等物にリダイレクトしています。新しいサイトはwww.eastwood-whelpton.co.uk(現在はHTML5ブラウザでのみ動作します)で閲覧できます。.htaccessサブドメインでない場合のリダイレクト

これまでは、古いページのそれぞれを新しいサイトの場所に翻訳するために、多くのRedirect Permanentステートメントを作成することによって、これを実現しました。

これまでのウェブサイトのサブドメインを作成する必要があるまで、これはうまくいきました。以前は、フォルダ/old/に入っていましたが、Robots.txtから許可されていないにもかかわらずGoogleではまだクロールしています。これを修正するために、私はサブドメイン 'old'に入れました。

問題は今、old.eastwood-whelpton.co.uk/about.htmなどのページにアクセスすると、新しいサイトにあるold.eastwood-whelpton.co.uk/about/about.phpにリダイレクトしようとします。

私のHTACCESSファイルのスニペットです。私が必要とするのは、古い「www」ページをリダイレクトすることですが、「古い」サブドメインの古いページはリダイレクトしません。

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^eastwood-whelpton [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

DirectoryIndex index.php 

Redirect permanent /index.htm /index.php 
Redirect permanent /index.html /index.php 

Redirect permanent /yachthire.htm /holidays/sailingholidays.php 
Redirect permanent /yachts.htm /about/thefleet.php 
Redirect permanent /handover.htm /training/handover.php 
Redirect permanent /holiday.htm /holidays/familyholidays.php 

答えて

1

まず、Redirectはそれらを混在させないでくださいmod_alias

からディレクティブです!あなたのRedirectディレクティブはあなたが持っている何でもRewriteRuleで実行されます。

代わりにこれを行います。

私はあなたのRedirectsRewriteRuleに変更し、それらを少し微調整しています。 、追加した

するRewriteCondの%{HTTP_HOST} ^古い[NC]
のRewriteRule^- [L]

これはあなたのoldサイトのURLのいずれかをリダイレクトされません。ここで

は全体です:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} ^old [NC] 
RewriteRule^- [L] 

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

DirectoryIndex index.php 

ReWriteRule index\.html? /index.php [L,R=301] 
ReWriteRule yachthire\.htm /holidays/sailingholidays.php [L,R=301] 
ReWriteRule yachts\.htm /about/thefleet.php [L,R=301] 
ReWriteRule (handover)\.htm /training/$1.php [L,R=301] 
ReWriteRule (holiday)\.htm /holidays/family$1s.php [L,R=301] 
+0

素晴らしいです。それはちょっとパッチキーですが、おそらくキャッシングなどで、ちょっとだけ/yachts.htmリダイレクトが正常に機能しますが、RewriteRule^- [L]がパズルの鍵です。私はそれが働くようになると答えとしてこれを選択します。ありがとう! – CJxD

+0

@CJxDブラウザキャッシュを一度クリアしてください。それから試してみてください。ちょうどあなたのApacheを再起動してください。 – ThinkingMonkey

+0

さて、私はまだそれを動作させることはできません。適切に応答する唯一のものは/yachts\.htm行です。 – CJxD

関連する問題