nginx и rewrite

T
На сайте с 17.09.2011
Offline
6
1715

Помогите настроить rewrite для ботов, пытаюсь уже весь день перенаправить ботов на второй location но nginx выводит пустой результат для ботов, для посетителей же выводит нормальную инфу.

include /etc/nginx/location.conf - одинаковые в обоих конфигах, спецально для теста поставил одинаковые, но ботам идет пустая страница а не ботам нормально отдается контент, почему так не могу понять, уже ставил последнюю версию nginx но результат тот же.

P.S: если убрать перенаправление для ботов то открывает нормально.

P.S.S: если вместо rewrite ^ /bot; поставить return 403; то выводит ошибка как положено, не срабатывает именно rewrite ^ /bot; а вот как правильно его перенаправить на секцию понять не могу.

U.P: return 403; в секции location /bot выдает ошибку nginx 403, тоесть секцию бот он понимает, но вот почему вместо сайта он отдает белый экран понять не могу..

Вот собственно конфиг.

       server {

if ($http_user_agent ~* (Yandex|Google|Mail)) {
rewrite ^ /bot;
}

include /etc/nginx/server_name.conf;
location / {
include /etc/nginx/location.conf;
}

location /bot {
include /etc/nginx/location.conf;
}
}



server {
listen 443;
include /etc/nginx/server_name.conf;
location / {
include /etc/nginx/location.conf;
}
include /etc/nginx/ssl.conf;
}
[Удален]
#1

rewrite ^ @bot ? Так, на вскидку.

T
На сайте с 17.09.2011
Offline
6
#2
Dmitry.Sidorov:
rewrite ^ @bot ? Так, на вскидку.

так отдает

500 Internal Server Error

nginx/0.7.67

Забыл еще указать что все проксируется на другой сервер апач

include /etc/nginx/location.conf;

proxy_pass http://IP:80;
proxy_redirect http://IP:80/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;

U.P: return 403; в секции location /bot выдает ошибку nginx 403, тоесть секцию бот он понимает, но вот почему вместо сайта он отдает белый экран понять не могу.. учитывая что для обоих location конфиги одинаковые.

---------- Добавлено 24.04.2012 в 21:54 ----------

Нашел проблему, rewrite ^ /bot; не только на секцию перекидывает но и на сервере открывает страницу сайт/bot , в результате скрипт php отдает белый экран и nginx забирает белый экран, как можно от этого избавится ?)

Andreyka
На сайте с 19.02.2005
Offline
822
#3

Создать исключение для php или прописать явную локацию

Не стоит плодить сущности без необходимости
SR
На сайте с 20.10.2010
Offline
11
#4

можно добавить rewrite правило в локейшн /bot, что-то типа

rewrite ^/bot(.*) /$1 break;

Но я бы сделал иначе. В секции server в if заменил

rewrite ^ /bot на

return 403;

и добавил

error_page 403 = @bot;

Соответственно с созданием этого именованного локейшена вместо /bot.

T
На сайте с 17.09.2011
Offline
6
#5
SoulReaver:
можно добавить rewrite правило в локейшн /bot, что-то типа
rewrite ^/bot(.*) /$1 break;
Но я бы сделал иначе. В секции server в if заменил
rewrite ^ /bot на
return 403;
и добавил
error_page 403 = @bot;
Соответственно с созданием этого именованного локейшена вместо /bot.

Спасибо, сейчас попробую так :)

с локейшеном чуть-чуть не разобрался, если можно на примере кода это)

SR
На сайте с 20.10.2010
Offline
11
#6

if ($http_user_agent ~* (Yandex|Google|Mail)) {

rewrite ^ /bot;

}

меняем на

if ($http_user_agent ~* (Yandex|Google|Mail)) {

return 403;

}

error_page 403 = @bot;

и

location /bot {

меняем на

location @bot {

T
На сайте с 17.09.2011
Offline
6
#7
SoulReaver:
if ($http_user_agent ~* (Yandex|Google|Mail)) {
rewrite ^ /bot;
}
меняем на
if ($http_user_agent ~* (Yandex|Google|Mail)) {
return 403;
}
error_page 403 = @bot;

и
location /bot {
меняем на
location @bot {

что-то ступил малеха, спасибо :)

все работает))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий