🤖

robots.txtのSitemapを動的にする

2023/11/30に公開

まえがき

失敗したんです。robots.txtもsitemapも生成してるぜイエーィって思ってたんです。ところがとあるシステムはマルチドメイン対応だったので、ドメインを動的に出力が必要でした。
まぁそもそも「Sitemap: 云々」が相対パスじゃダメって知らなくてぇ...

意外と「コレだ!」なアドバイスはない

GPTに聞いても、ググっても意外とこれだっていう刺さる実装な意見はなかったんですね。なので記事を起こすことにします。まずrobots.txtを保険として設置します。最悪これみてねってファイルです。

robots.phpとRewrite記述だけで解決する

robots.txt
User-agent: *
Allow: /

で、次が、VirtualHostか.htaccessに「robots.txt」にアクセスしたら「robots.php」にリライトするよって書きます。これは皆さんの環境により左右されるはずなので、よしななところに設置します。

VirtualHost.conf or .htaccess
RewriteEngine On
...
RewriteRule ^robots\.txt$ robots.php [L]
...

するともうドメインの箇所をPHPにするだけです。

robots.php
User-agent: *
Allow: /

<?php
header("Content-Type: text/plain");

echo "Sitemap: https://".$_SERVER['SERVER_NAME']."/path/sitemap.no.file\n";
?>

ググるとあるのが、robots.xxx.txtみたいに分ける例。これも個別にいろいろある場合はいいですが、うちはSitemap以外に違いはないので1ファイルで完結の方が無駄がありません。
それに個別にという状況になっても、各ドメインアカウントに対して、データをDBにいれさせて、それを出力するだけになり、どもみち1ファイルで完結します。ね。

Discussion