如何在同一网站上为http和https提供不同的robots.txt?


11

我有一个由Apache服务的小型站点(我不能将Nginx放在前面,也不能将Apache更改为任何内容),并且它设置为可以通过http和https服务同一站点(没有重定向http-> https,因此到目前为止,因此http和https版本都是并行提供的)。

我需要.htaccess通过http和https 设置相同的URI来提供不同的文本文件吗?

就像http://example.com/proto.txt说“该网站通过http”,而https://example.com/proto.txt会说“该网站通过https服务”。


没有足够的时间检查编写此代码的确切方法(因此只是注释,而不是答案),但是如果您不想或无法更改主Apache配置,则可以使用另一种方法一个RewriteRule.htaccess与被服务就可以了条件通过https。
jcaron

@dcaron,这正是我所需要的,我只是想不出该怎么做,并且需要一个建议或(更好的)代码片段来做到这一点:)
Kevin M,

您的http和https站点位于<VirtualHost>s中。因此,您只需要在其中之一中配置其​​他robots.txt。大约是这样:RewriteRule ^/robots.txt$ /path/to/alternative/robots.txt [L]
彼得-恢复莫妮卡

Answers:


19

使用别名

创建两个文件robots.txt和robots_http.txt并将其添加到您的http VirtualHost中:

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"

无法修改虚拟主机设置,只能编辑.htaccess,这就是窍门。
凯文M

2

如果您不能或不会更改“主” Apache配置,但需要在.htaccess文件中进行更改,则可以将带有的RewriteRule配合使用,以RewriteCond检查HTTPS。

类似于以下内容:

RewriteEngine On

RewriteCond %{HTTPS} "on"
RewriteRule robots.txt robots_https.txt [L]

应该可以工作(我没有测试)。

请注意,这是基于Apache本身进行HTTPS终止的。如果HTTPS终止是在反向代理之前完成的,则条件可能会有所不同(并取决于反向代理和Apache的配置)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.