web-dev-qa-db-ja.com

robots.txtファイルとsitemap.xmlファイルは、.htaccessリダイレクトを通じて動的にできますか?

多言語およびマルチドメインサイトがあります。独自のCMSインストール(Drupal)を実行するため、単一のルートディレクトリがあります。そのため、静的なrobots.txtがある場合、私が知る限り、単一のドメインのファイルのみを表示できます。

.htaccessに行を入れてください

Redirect 301 /robots.txt /robots.php

(または同等の指示、および許可されている場合はどれを示してください)

そのため、$_SERVER['HTTP_Host']に応じて別の包含を提供できる動的phpファイルにリダイレクトします。

sitemap.xmlについても同じ質問なので、動的なsitemap.phpを提供して、ドメインごとに異なるリンクを示します。

前述のように、.txtと.xmlを使用しない場合の問題は、すべてのドメインがサーバーコンピューター内の単一の物理ディレクトリを共有することです。

10
Cesar

任意のファイルを動的にすることができます。そのための最善の方法は、リダイレクトではなく、書き換えルールを使用することです。

RewriteRule ^robots\.txt$  /robots.php [L]

そうすれば、動的スクリプトでそれを強化できますが、URLは変更されません。ほとんどのクローラー(Googlebotを含む)はrobots.txtのリダイレクトに従いますが、リダイレクトを導入すると、一部のクローラーが混乱します。

PHPを使用する場合でも、robots.txtはappearで各ドメインの各クローラーに対して静的である必要があります。ドメインごとに、またはユーザーエージェントごとに、さまざまなコンテンツを提供することは問題ありません。ただし、異なるコンテンツをランダムに、または時刻に基づいて提供すると、検索エンジンのクローラーが混乱し、SEOが台無しになる可能性があります。


サイトマップの名前は自由です。それらをリダイレクトするか、書き換えルールを使用して、同じURLで動的に強化することができます。次のように名前を付けることもできます

  • site-a-sitemap.xml
  • site-b-sitemap.xml
  • site-c-sitemap.xml

次に、それらをrobots.txtで参照します。

Sitemap: http://www.example.com/example-sitemap.xml

または、ウェブマスターツールまたは検索コンソールから手動で検索エンジンに送信してください。

11

はい、同じ方法anyリクエストは「動的」にできます。

ただし、リダイレクト(例のコードのように)ではなく、mod_rewriteを使用して内部的に書き換えを実行する必要があります。 (Drupalがすでに行っていることと同じです。)

たとえば、ルートの.htaccessファイルで:

RewriteEngine On
RewriteRule ^robots\.txt$ robots.php [L]

RewriteEngineは一度しか発生しません(複数回発生するかどうかは実際には関係ありません)。

.htaccessファイル内の他のディレクティブと競合しないことを確認する必要があります。したがって、これはおそらくnearファイルの開始点、front controllerの前にあるはずです。

5
MrWhite

サイトマップファイルを動的にすることは問題ありません。サイトマップを自動更新するのに良い方法です。

Robots.txtファイルを動的にする(同じホストに対して!別々のホストに対してこれを行うのは、基本的に各ホストに対して通常のrobots.txtファイルです。)問題が発生する可能性があります:サイトからURLがクロールされるたびにクロールされない、「間違った」バージョンがキャッシュされることがあります。たとえば、営業時間中にrobots.txtファイルがクロールをブロックするようにすると、その後キャッシュされ、1日間追跡される可能性があります。つまり、何もクロールされません(または、クロールが許可されている場合はキャッシュされます)。たとえば、Googleはほとんどのサイトでrobots.txtファイルを1日に1回クロールします。

4
John Mueller

次の理由により、sitemap.phpを作成する必要はありません。1.言語ごとに、個別のsitemap.xmlファイルを実行し、検索エンジンコンソールでそれぞれを指定できます。 2.標準のサイトマップファイルは定期的に書き換えて最新のコンテンツを含めることができ、動的な方法でそれらを作成します。そのため.phpは必要ありません。標準の拡張子が.xmlの同じファイルを再作成するのは、内部更新メカニズムとcron次第です

Sitemap.xmlファイルは静的であり、更新によってのみ動的になり、リアルタイムで更新されません。 1分ごとに書き換えるようにすることも可能ですが、その理由は次のとおりです。1. Googleは最後の送信から1時間以内にチェックしない2.サイトマップファイルが大きい場合は書き換える多くの場合、サーバーのパフォーマンスが低下します。

大量のデータがあり、サイトマップファイルが50 MBを超える場合、複数のサイトマップを持つシステムが必要です。これは、sitemap2,3 ... .xmlがメインファイルのリストに追加されることを意味しますが、これらのファイルのコンテンツは、これらのファイルが再作成されるまで(たとえばcronによって)固定されたままです。

また、検索エンジンがファイルにアクセスすると、(手動で行われない限り)再び高速でファイルに戻ることはありません。通常のsitemap.xml自体は動的であり、1日または1週間にわたって新しいコンテンツで更新できるため、sitemap.phpのリアルタイム更新を作成する必要はありません。

Sitemap.phpを使用しているプロのことは考えられません。これらのファイルを使用する他のより良い/適切な方法があるので、それは役に立たないでしょう。

0
Inducto