我正在尝试根据服务器的域重写文件名。
下面的代码是错误的/不起作用,但说明了所需的效果。
<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>