すぐに助けが必要です。
最近、サブドメインを移行してドメインと統合しました。
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/anything
301 は にリダイレクトされます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 (一時的) リダイレクトでテストしてください。また、テストする前にブラウザのキャッシュをクリアしたことを確認してください。