Вопрос по nginx – Как настроить nginx для перенаправления на URL для robots.txt & sitemap.xml

19

Я использую nginx 0.6.32 в качестве внешнего прокси для couchdb. У меня есть мой robots.txt в базе данных, доступный какhttp://www.example.com/prod/_design/mydesign/robots.txt, У меня также есть мой sitemap.xml, который генерируется динамически по аналогичному URL.

Я попробовал следующий конфиг:

server {
  listen 80;
  server_name example.com;
  location / {
  if ($request_method = DELETE) {
    return 444;
  }
  if ($request_uri ~* "^/robots.txt") {
    rewrite ^/robots.txt http://www.example.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;
}

Кажется, это работает как перенаправление, но есть ли более простой способ?

Ваш Ответ

6   ответов
3

may выступить немного лучше.

location /robots.txt { alias /var/www/django/mysite/static/robots.txt; }
1

что первый параметр является регулярным выражением, поэтому вам, вероятно, следует экранировать. и соответствует концу строки.

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

NginxHttpRewriteModule

5

// ... предназначен для перенаправления. Вы, вероятно, ищете:

rewrite ^/robots.txt /prod/_design/mydesign/robots.txt last;
Error: User Rate Limit Exceededlocation = /sitemap.xml { rewrite ^/sitemap\.xml$ /index.php?xxxxxxxxx permanent; }
55

location /robots.txt {
    alias /Directory-containing-robots-file/robots.txt;
} 
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededlocation /sitemap { root /home/ec2-user/app_directory/public; }
Error: User Rate Limit Exceededdirectory-containing-fileError: User Rate Limit ExceededincludingError: User Rate Limit Exceededalias /www/static;Error: User Rate Limit Exceededalias /www/static/robots.txt;Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededalias /directory;Error: User Rate Limit Exceededroot /opt/directory/;Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
18

что вы хотите настроить местоположение. Ключевой частью является & quot; = & quot; директивы.

location = /robots.txt {
    alias /your_full_path/robots.txt ;
}

(Когда я не включил =, он все равно перешел в корневую папку nginx по умолчанию)

Установка его, как показано ниже, приведет к тому, что все запросы /robots.txt* будут считаны из / var / foo. Поэтому /robots.txt.bing пытается прочитать /var/foo/robots.txt.bing с диска. & Quot; ^ ~ & quot; указывает, что это совпадение с регулярным выражением в начале запроса.

location ^~ /robots.txt {
    root /var/foo;
}
0

robots.txt находится по адресу/var/www/mysite/static/robots.txt, у меня сработало следующее:

location = ,/robots.txt {
    root /var/www/mysite/static/;
}

Похожие вопросы