tags:

views:

756

answers:

3

I am running nginx 0.6.32 as a proxy front-end for couchdb. I have my robots.txt in the database, reachable as http://www.mysite.com/prod/_design/mydesign/robots.txt. I also have my sitemap.xml which is dynamically generated, on a similar url.

I have tried the following config:

server {
  listen 80;
  server_name mysite.com;
  location / {
  if ($request_method = DELETE) {
    return 444;
  }
  if ($request_uri ~* "^/robots.txt") {
    rewrite ^/robots.txt http://www.mysite.com/prod/_design/mydesign/robots.txt permanent;
  }

  proxy-pass http://localhost:5984;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

This appears to work as a redirect but is there a simpler way?

+1  A: 

rewrite with http://... is inteded to do the redirect. You are probably looking for:

rewrite ^/robots.txt /prod/_design/mydesign/robots.txt last;
rzab
+1  A: 

Note that the first parameter is a regular expression so you should probably escape . and match end of line.

location / {
    rewrite ^/robots\.txt$ /static/robots.txt last;
    ...
}

NginxHttpRewriteModule

Serbaut
A: 

Or you can put it simply in its own location -

location /robots.txt {
    alias /Directory-containing-robots-file;
} 
PlanetUnknown