Назад | Перейти на главную страницу

Установка noindex некоторых страниц на NGINX

Я хочу установить noindex для некоторых URL. Если какой-либо URL-адрес содержит ? lang = | (начать с) / плагин | (начать с) /учетная запись это должно быть noindex, добавив HTTP-заголовок в конфигурацию NGINX.

Раньше я пробовал код ниже,

location ~ .*/(?:?lang|plugin|account)/.* {
    add_header X-Robots-Tag "noindex, follow" always;      
}

Другие директивы местоположения NGINX, которые я использую для своего веб-сайта: (Эти директивы по умолчанию для моего скрипта работают хорошо.)

#Disable access to sensitive files
location ~* /(app|content|lib)/.*\.(po|php|lock|sql)$ {
    deny all;
}
#CORS headers
location ~* /.*\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js) {
    add_header Access-Control-Allow-Origin "*";
}
#Upload path for image content only and set 404 replacement
location ^~ /images/ {
    location ~* (jpe?g|png|gif) {
        log_not_found off;
        error_page 404 /content/images/system/default/404.gif;
    }
    return 403;
}
#Pretty URLs
location / {
    index index.php;
    try_files $uri $uri/ /index.php?$query_string;
}

Хотя сообщений об ошибках при перезагрузке Nginx нет, директива noindex не появляется.

location Директивы соответствуют только нормализованным URI, которые не включают аргументы запроса. Это причина, по которой вы не можете сопоставить ?lang.

Чтобы соответствовать этому, вы можете использовать переменную аргумента запроса, чтобы найти совпадение.

if ($arg_lang) {
    add_header X-Robots-Tag "noindex, follow" always; 
}

Этот фрагмент следует включить в location / блок.

Для сопоставления с другими случаями я бы сделал следующее:

location /plugin {
    add_header X-Robots-Tag "noindex, follow" always; 
    try_files $uri $uri/ /index.php?$query_string;
}

location /account {
    add_header X-Robots-Tag "noindex, follow" always; 
    try_files $uri $uri/ /index.php?$query_string;
}

Важно включить try_files заявления в них, поскольку только один location блок выбран для использования.