使用 htaccess 根据主机重写 robots.txt

使用 htaccess 根据主机重写 robots.txt

我正在尝试根据服务器的域重写文件名。

下面的代码是错误的/不起作用,但说明了所需的效果。

<If "req('Host') != '*.mydevserver.com'">
  RewriteRule "^/robots\.txt$"  "robots-staging.txt"    [R]
</If>

期望的效果是,这个 htaccess 将指向不同的 robots.txt,具体取决于它是否处于暂存区(通配符子域)。

使用示例:

http://client1.devsite.com/robots.txt重写为
http://client1.devsite.com/robots-staging.txt

http://client2.devsite.com/robots.txt重写为
http://client2.devsite.com/robots-staging.txt

https://client.com/robots.txt没有重写
https://myclient.com/robots.txt

答案1

您可以使用更动态的方法:

RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [NS]

并将 robots.txt 文件放置在以下位置:

  • robots/域名.tld.txt
  • robots/sub.domain.tld.txt

我在基于 TYPO3 CMS 和 Neos CMS 的一些多网站项目上遇到了这个解决方案。

答案2

我找到了自己的答案。这按预期工作。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^(.*)?mydevserver(\.com)
    RewriteRule ^robots\.txt$ robots-staging.txt [NS]
</IfModule>

相关内容