LINUX.ORG.RU

Nginx rewrite


0

1

Вообщем, задача такая. Есть некий движок на котором встала задача генерировать robots.txt автоматически. Он отдает контен по локейшену /robots/ Хочу в nginx-е написать правило для прозрачного реврайта:

location /robots.txt {
    rewrite ^/robots\.txt$ /robots/ break;
}
Не работает, отдает 404 ошибку почему-то :( Как победить?

★★★★★

Ответ на: комментарий от Sylvia

ну код-то 200, да.. Но контент не тот )
Надо как-то сказать nginx-у, что по этому урлу надо отдать контент, который будет сгенерирован по локейшену /robots/

Апача нету сзади, если что. Есть php-fpm

boombick ★★★★★
() автор топика
Ответ на: комментарий от boombick

а /robots/ каким образом воспринимается cms?
если например туда index.php положить - то он выполняется, или index.html , тоже все работает

server
{
listen 80;
server_name неважно;
...
location ~ /\.ht { deny all; }


location = /robots.txt {
rewrite ^(.*)$ /robots/ last;
}

... все остальное


# $DOCUMENTROOT/robots #cat index.php
<?php

echo hello;

?>


##wget -O - http://неважно/robots/
...
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `STDOUT'

[<=> ] 0 --.-K/s hello
[ <=>


hello на месте. реврайт работает, nginx 0.8.54 + php-fpm тоже

Sylvia ★★★★★
()

можно еще вот так, не совсем красиво правда и код ответа идет 302

server { ...

rewrite ^/robots.txt http://хостнейм/robots/ last;

... все остальное
location {

Sylvia ★★★★★
()
Ответ на: комментарий от boombick

Если я правильно понял задачу, то достаточно просто сделать так:

location = /robots.txt {
  rewrite ^(.*)$ /robots/ last;
}

location = /robots/ {
  fastcgi_pass 127.0.0.1:9000;
  include    /etc/nginx/fastcgi_params;
}
BigAlex ★★★
()
Ответ на: комментарий от BigAlex

Да! Точно, спасибо тебе, мил человек :) Чтой-то я затупил

boombick ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.