200 ページを超えるページを新しい場所の対応する 200 ページに 301 リダイレクトするにはどうすればよいでしょうか?

200 ページを超えるページを新しい場所の対応する 200 ページに 301 リダイレクトするにはどうすればよいでしょうか?

すぐに助けが必要です。

最近、サブドメインを移行してドメインと統合しました。

https://blog.example.com例:https://www.example.com/blog

https://blog.example.com大量のトラフィックがあり、それを失ってほしくありません。そのため、301 リダイレクトを行う必要があります。

問題は、https://blog.example.comパフォーマンスが良好なページが 200 ページ以上あることです。

ウェブサイトの速度を低下させたり、サーバーに過負荷をかけたりせずに、すべてのページを新しい場所の対応するページにリダイレクトする方法についてアドバイスが必要です。

私たちは試しました

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]  
RewriteCond %{HTTP_HOST} ^www.example.com [NC]   
RewriteRule ^(.*)$ https://example.net/$1 [L,R=301,NC]

しかし、ホームパヘのみがリダイレクトされました

これらのページを 1 つずつリダイレクトする必要がありますか?

答え1

私たちは試しました

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]  
RewriteCond %{HTTP_HOST} ^www.example.com [NC]   
RewriteRule ^(.*)$ https://example.net/$1 [L,R=301,NC]

「最近サブドメインを移行した」とおっしゃっていますが、投稿したコードはサブドメインを対象としておらず、質問で説明したホスト名の例と競合していますか?

これは、ファイル内の間違った場所に置いた場合に「ホームページのみ」をリダイレクトします.htaccess。たとえば、フロント コントローラの内部書き換え。このリダイレクトはルート.htaccessファイルの一番上に配置する必要があります。

ウェブサイトの速度を低下させたり、サーバーに過負荷をかけたりすることなく。

200 個の同じ URL リダイレクトは、パフォーマンス/オーバーヘッドの点では重要ではありません。ただし、これらのリダイレクトが及ぼす可能性のあるすべての影響を完全に最小限に抑えるには、blogサブドメインがファイルシステムの別の領域を指すようにする必要があります。これにより、リダイレクトがさらに簡素化されます。(実際には、サブドメインを特定のディレクトリにポイントする必要はなく、サーバー構成/仮想ホストで直接リダイレクトを実行します.htaccess。)

Redirect「200 リダイレクト」は、単一の mod_aliasディレクティブ (.htaccessまたはコンテナー内)で実行できます<VirtualHost>。例:

Redirect 301 / https://www.example.com/blog/

ディレクティブRedirectはプレフィックス一致であり、一致後のすべてがターゲット URL の末尾にコピーされます。たとえば、http(s)://blog.example.com/anything301 は にリダイレクトされますhttps://www.example.com/blog/anything

それ以外の場合、サブドメインとメインドメインがファイルシステム上の同じ場所を指している場合は、mod_rewriteを使用して、最初に行ったのと同じように、要求されたホスト名を確認します(ただし、なぜ確認していたのかはわかりません)。example.com または www.example.comサブドメインをチェックする必要がありましたblog.example.com

例えば、非常にトップルート.htaccessファイルの:

 RewriteEngine On

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

NC正規表現はすでにすべてに一致するため、フラグは不要です.*

または、ディレクティブREQUEST_URIでサーバー変数を使用してRewriteRule、バック参照を回避します。例:

 :
 RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

サーバーREQUEST_URI変数にはすでにスラッシュ プレフィックスが含まれています。

潜在的なキャッシュの問題を回避するために、まず 302 (一時的) リダイレクトでテストしてください。また、テストする前にブラウザのキャッシュをクリアしたことを確認してください。

関連情報