多个域和一个文件夹-如何管理sitemap.xml?

时间:2018-10-26 06:51:40

标签: php laravel-5 php-7

我有多个域example-A.comexample-B.comexample-C.com,它们都是不同的,但是它们都指向服务器上的同一文件夹(这三个域紧密相连,但仅通过单个Laravel应用程序进行管理,有关更多信息,请参见Multiple websites with one Laravel installation

现在,我需要为每个域使用不同的sitemap.xml文件。

我在this answer how to execute PHP inside XML files找到了。这样,我可以相对于sitemap.xml动态更改url的内容。如果爬网程序和SE尝试访问XML文件,此方法是否适用?还是有更推荐的方法?

1 个答案:

答案 0 :(得分:1)

具有与sitemap.xml匹配的路由,但该路由指向PHP脚本。然后,该脚本会提供一个预先生成的站点地图文件,甚至可以自己生成。 我能想到的最简单的方法是:

# .htaccess
RewriteRule ^/sitemap.xml$ sitemap.php [L]

// sitemap.php
switch ($_SERVER['HTTP_HOST']) {
    case 'example-A.com':
        echo file_get_contents(__DIR__ . '/sitemap-A.xml');
        break;
    case 'example-B.com':
        echo file_get_contents(__DIR__ . '/sitemap-B.xml');
        break;
    // etc.
}

我不了解Laravel,但我确定有一种方法可以创建与/sitemap.xml匹配并由某些控制器提供服务的路由。