loop de redirecionamento Nginx

1

Estou tentando transferir um site de um servidor para outro. Eu normalmente uso o apache, mas este projeto estava usando nginx e Ultimate SEO para modificação de URL. Eu estou usando o mesmo arquivo de configuração nginx, mas estou terminando com um erro de loop de redirecionamento. Aqui está o conteúdo do arquivo padrão nos sites disponíveis:

# You may add here your
# server {
#   ...
# }
# statements for each of your virtual hosts

server {
    listen   80 default;
    server_name  mysitehere.com;

    access_log  /var/log/nginx/mysitehere.access.log;
       #fastcgi_param  DOCUMENT_ROOT     /site/public_html/;
    location / {
        root   /site/public_html/;
        index  index.php index.html index.htm;


#       rewrite ^/(.*) http://mysitehere.com/$1 permanent;


        #rewrite ^/index.php?main_page=shopping_cart$ http://mysitehere.com/index.php?main_page=shopping_cart last;

        if ($host != 'mysitehere.com') {
            rewrite ^/(.*)$ http://mysitehere.com/$1 last;
        }

        if ($host = 'mysitehere.com') {
            rewrite ^/(.*)$ http://mysitehere.com/$1 last;
        }

        # From Ultimate SEO URLs
        rewrite ^/(.*)-blog-(.*).html$ /index.php?main_page=blogread last;
        rewrite ^/(.*)-se-(.*).html$ /index.php?main_page=readarticle last;
        rewrite ^/(.*)-ca-(.*).html$ /index.php?main_page=readarticle last;
        rewrite ^/blog.html$ /index.php?main_page=blog last;
        rewrite ^/(.*)-p-(.*).html$ /index.php?main_page=product_info&products_id=$2&$query_string last;
        rewrite ^/(.*)-ri-(.*).html$ /index.php?main_page=document_general_info&products_id=$2&$query_string last;
        rewrite ^/(.*)-c-(.*).html$ /index.php?main_page=index&cPath=$2&$query_string} last;
        rewrite ^/(.*)-m-([0-9]+).html$ /index.php?main_page=index&manufacturers_id=$2&$query_string last;
        rewrite ^/(.*)-pi-([0-9]+).html$ /index.php?main_page=popup_image&pID=$2&$query_string last;
        rewrite ^/(.*)-pr-([0-9]+).html$ /index.php?main_page=product_reviews&products_id=$2&$query_string last;
        rewrite ^/(.*)-pri-([0-9]+).html$ /index.php?main_page=product_reviews_info&products_id=$2&$query_string last;

        # For Open Operations Info Manager
        rewrite ^/(.*)-i-([0-9]+).html$ /index.php?main_page=info_manager&pages_id=$2&$query_string last;

        # For dreamscape's News & Articles Manager
        rewrite ^/news/?$ /index.php?main_page=news&$query_string last;
        rewrite ^/news/rss.xml$ /index.php?main_page=news_rss&$query_string last;
        rewrite ^/news/archive/?$ /index.php?main_page=news_archive&$query_string last;
        rewrite '^/news/([0-9]{4})-([0-9]{2})-([0-9]{2}).html$ /index.php?main_page=news&date=$1-$2-$3&$query_string' last;
        rewrite '^/news/archive/([0-9]{4})-([0-9]{2}).html$ /index.php?main_page=news_archive&date=$1-$2&$query_string' last;
        rewrite ^/news/(.*)-a-([0-9]+)-comments.html$ /index.php?main_page=news_comments&article_id=$2&$query_string last;
        rewrite ^/news/(.*)-a-([0-9]+).html$ /index.php?main_page=news_article&article_id=$2&$query_string last;

        # All other pages
        if (!-f $request_filename) {
         rewrite ^/(.*).html$ /index.php?main_page=$1&$query_string last;
        }

        location ~ /\. {
                deny        all;
                }



    }

        location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|bmp)$ { 
        root   /site/public_html;
        rewrite ^/min/([a-z]=.*) /min/index.php?$1 last;
        rewrite ^(.*?)\.v-([^\.]+)\.(js|css)$ $1.$3;
        access_log off;
        expires max;
        }

     location ~* \.php$ {
        fastcgi_pass        unix:/tmp/php-fpm.sock;
        fastcgi_index       index.php;
            fastcgi_param       DOCUMENT_ROOT     /site/public_html;
        fastcgi_param       SCRIPT_FILENAME  /site/public_html;
        include             fastcgi_params;
    }    

       # HTTPS
    error_page  404  /index.php?main_page=page_not_found;


}

Substitui o URL real por "mysitehere", mas, por outro lado, é o mesmo. Tentei ler outras publicações relacionadas a esse assunto, mas não consegui identificar o que estava causando o erro nesse arquivo em particular. Alguém tem alguma idéia do que está causando isso?

    
por user57187 23.04.2011 / 02:11

1 resposta

2

Acho que o seu problema é esse pouco da configuração:

    if ($host = 'mysitehere.com') {
        rewrite ^/(.*)$ http://mysitehere.com/$1 last;
    }

Note que isso é basicamente reescrever qualquer URL em mysitehere.com para si mesmo, e a última diretiva para processamento adicional. Como o URL regravado começa com http: //, ele instrui o Nginx a fazer um redirecionamento 301 externo em vez de reescrever internamente o URL e veicular a página como se fosse outro URL. Eu acabei de remover essa seção inteiramente.

Se você não tiver feito isso, confira a documentação sobre reescrita do Nginx para detalhes; não é tão complicado de ler.

    
por 23.04.2011 / 03:56