Couchdbのプロキシフロントエンドとしてnginx0.6.32を実行しています。データベースにrobots.txtがあり、 http://www.example.com/prod/_design/mydesign/robots.txt としてアクセスできます。同様のURLで動的に生成されるsitemap.xmlもあります。
私は次の設定を試しました:
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;
}
これはリダイレクトとして機能しているように見えますが、もっと簡単な方法はありますか?
または、単に独自の場所に配置することもできます-
location /robots.txt {
alias /Directory-containing-robots-file/robots.txt;
}
場所を設定したいと思います。重要な部分は「=」ディレクティブです。
location = /robots.txt {
alias /your_full_path/robots.txt ;
}
(=を含めなかった場合でも、デフォルトのnginxルートの場所に移動しました)
以下のように設定すると、すべての/robots.txt*リクエストが/ var/fooから読み取られます。そのため、/ robots.txt.bingはディスクから/var/foo/robots.txt.bingを読み取ろうとします。 「^〜」は、リクエストの開始時に正規表現が一致することを示します。
location ^~ /robots.txt {
root /var/foo;
}
http:// ...で書き換えることは、リダイレクトを行うことを目的としています。あなたはおそらく探しています:
^/robots.txt/prod/design/mydesign/robots.txtを最後に書き換えます;
これも機能するはずであり、mayパフォーマンスがわずかに向上します。
location /robots.txt { alias /var/www/Django/mysite/static/robots.txt; }
最初のパラメーターは正規表現であるため、おそらくエスケープする必要があることに注意してください。行末に一致します。
location / {
rewrite ^/robots\.txt$ /static/robots.txt last;
...
}
robots.txt
が/var/www/mysite/static/robots.txt
にあることを考えると、次のことがうまくいきました。
location = /robots.txt {
root /var/www/mysite/static/;
}