我有一个由 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 提供服务”。
答案1
使用别名
创建两个文件,robots.txt 和 robots_http.txt 并将其添加到您的 http VirtualHost:
Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"
答案2
如果您不能或不愿意更改“主” Apache 配置但需要在文件中进行更改.htaccess
,则可以使用RewriteRule
检查RewriteCond
HTTPS 的。
大致如下:
RewriteEngine On
RewriteCond %{HTTPS} "on"
RewriteRule robots.txt robots_https.txt [L]
应该可以工作(我没有测试过)。
请注意,这是基于 Apache 本身执行 HTTPS 终止。如果在它之前的反向代理上执行了 HTTPS 终止,则情况可能会有所不同(并且取决于反向代理和 Apache 的配置)。