Nginx httpサーバーの下のすべての仮想ホストにrobots.txt
を設定しようとしています。次のコードをmain httpd.conf
に入れることで、Apacheでそれを行うことができました。
<Location "/robots.txt">
SetHandler None
</Location>
Alias /robots.txt /var/www/html/robots.txt
以下の行を(a)nginx.conf内に追加し、(b)conf.d/robots.confをインクルードして、nginxで同様のことを試みました
location ^~ /robots.txt {
alias /var/www/html/robots.txt;
}
私は「=」を試してみて、それをテストするために仮想ホストの1つに配置しました。何も機能していないようです。
ここで何が欠けていますか?これを達成する別の方法はありますか?
場所はhttp
ブロック内では使用できません。 nginxにはグローバルエイリアスがありません(つまり、すべての仮想ホストに定義できるエイリアス)。フォルダーにグローバル定義を保存し、それらを含めます。
server {
listen 80;
root /var/www/html;
include /etc/nginx/global.d/*.conf;
}
Nginx設定でrobots.txtファイルの内容を直接設定できます。
location = /robots.txt { return 200 "User-agent: *\nDisallow: /\n"; }
正しいContent-Typeを追加することもできます。
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
定義されている他のルールはありますか?おそらくcommon.confまたは別のconfファイルが含まれているため、設定が上書きされています。次のいずれかが確実に機能するはずです。
location /robots.txt { alias /home/www/html/robots.txt; }
location /robots.txt { root /home/www/html/; }