Я использую Nginx и указываю пару старых доменных имен на новый сайт.
Первый блок в этой конфигурации отлично работает так, как мне нужно old.domain вести себя при перенаправлении на new.domain.
Во втором блоке я пытаюсь переслать любой запрос на oldmediaserver.domain Кроме /robots.txt на главную страницу new.domain. В текущем состоянии каждый запрос перенаправляется, в том числе для /robots.txt, и я не могу понять почему.
(Причина в том, что у меня было что-то проиндексировано Google из старого домена, и я пытаюсь удалить это из результатов поиска с помощью инструментов для веб-мастеров - это может не сработать, но я прошу помощи не по этому поводу! ).
# Old site to new site config
server {
listen 80;
listen [::]:80;
server_name old.domain www.old.domain;
rewrite ^ $scheme://www.new.domain$request_uri permanent;
}
# Media server Redirect and Robots directive
server {
listen 80;
listen [::]:80;
server_name oldmediaserver.domain www.oldmediaserver.domain;
location / {
rewrite / $scheme://www.new.domain/ permanent;
}
location /robots.txt {
return 200 "User-agent: *\nDisallow: /";
}
rewrite ^ $scheme://www.new.domain/ permanent;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/website-name/html;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name www.new.domain;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.php?$args;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# include a file for any 301 redirects
include includes/website-name-redirects;
location /members/ {
try_files $uri $uri/ /index.php?$args;
auth_basic "Members Login";
auth_basic_user_file /var/www/website-name/html/.htpasswd;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
#!!! IMPORTANT !!! We need to hide the password file from prying eyes
# This will deny access to any hidden file (beginning with a .period)
location ~ /\. { deny all; }
}
Спасибо за свет, который вы пролили!
Благодаря gf_ и Скиталец104 за комментарии. Скиталец104Комментарий о сопоставлении местоположения заставил меня изучить различные шаблоны сопоставления и в конечном итоге попасть в конфигурацию ниже.
# Media server Redirect and Robots directive
server {
listen 80;
listen [::]:80;
server_name oldmediaserver.domain www.oldmediaserver.domain;
location ^~ / {
rewrite ^ $scheme://www.new.domain/ permanent;
}
location ^~ /robots.txt {
return 200 "User-agent: *\nDisallow: /";
}
}
Я до сих пор не уверен, что полностью понимаю, почему это работает, а другое - нет, поэтому, если кто-то может пролить больше света, это было бы здорово!