On Tue, Jan 13, 2009 at 09:15:07PM -0200, Juan Fco. Giordana wrote:
Thank you Nick for your help,
I've followed your suggestions and it worked as expected.
I've changed the rewrite rule since I don't need to capture anything there.
server {
listen 443;
[...]
location = /robots.txt {
rewrite ^ /robots_ssl.txt last;
}
}
Does anybody know if this is possible to do within a single server
context that handle both protocols in version 0.7.*?
If your servers are different only in this part, then in 0.7 you can
server {
listen 80;
listen 443 default ssl;
location = /robots.txt {
if ($server_port = 443) { # or ($scheme = https)
rewrite ^ /robots_ssl.txt last; # or "break;"
}
}
...
If the servers have many differences, then it's better to use
separate servers. In this case you do not need rewrite, use just alias:
server {
listen 443;
location = /robots.txt {
alias /path/to/robots_ssl.txt;
}
Yet another way (the better than with if/rewrite):
map $scheme $robots {
default robots.txt;
https robots_ssl.txt;
}
server {
listen 80;
listen 443 default ssl;
location = /robots.txt {
alias /path/to/$robots;
}
Thanks.
On 2009-01-07 15:23:26 Nick Pearson wrote:
Hi Juan,
Try using two server directives -- one for http and one for https. The
server directive chosen depends on the port that is requested. Something
like this:
server {
listen 80; # http
server_name www.yoursite.com;
[...]
location /robots.txt {
break;
}
}
server {
listen 443; # https
server_name www.yoursite.com;
[...]
location /robots.txt {
rewrite (.*) /robots_ssl.txt;
}
}