Nginx + Wordpress Multisite 3.4.2 + subdiretórios + páginas estáticas e permalinks

2

Estou tentando configurar o Wordpress Multisite, usando subdiretórios, com Nginx, php5-fpm, APC e Batcache. Como muitas outras pessoas, estou ficando preso nas regras de reescrita para permalinks.

Eu segui estes dois guias, que parecem ser tão oficiais quanto você pode obter: link link

Está funcionando parcialmente:

Mas outros permalinks, como esses dois para um post ou para uma página estática, não funcionam:

Eles levam você a um erro 404 ou a algum outro blog!

Aqui está minha configuração:

server {
    listen       80 default_server;
    server_name  blog.ssis.edu.vn;
    root         /var/www;

    access_log   /var/log/nginx/blog-access.log;
    error_log    /var/log/nginx/blog-error.log;

    location / {
        index index.php;
        try_files $uri $uri/ /index.php?$args;

    }

    # Add trailing slash to */wp-admin requests.
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

    # Add trailing slash to */username requests
    rewrite ^/[_0-9a-zA-Z-]+$ $scheme://$host$uri/ permanent;

    # Directives to send expires headers and turn off 404 error logging.
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires 24h;
        log_not_found off;
    }

    # this prevents hidden files (beginning with a period) from being served
      location ~ /\.          { access_log off; log_not_found off; deny all; }

    # Pass uploaded files to wp-includes/ms-files.php.
    rewrite /files/$ /index.php last;

    if ($uri !~ wp-content/plugins) {
        rewrite /files/(.+)$ /wp-includes/ms-files.php?file=$1 last;
    }

    # Rewrite multisite '.../wp-.*' and '.../*.php'.
    if (!-e $request_filename) {

        rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
        rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;
        rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;

    }

    location ~ \.php$ {
    # Forbid PHP on upload dirs
        if ($uri ~ "uploads") {
            return 403;
        }

        client_max_body_size 25M;
        try_files      $uri =404;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }
}

Qualquer ideia é bem vinda! Fiz algo errado? Eu desabilitei o Batcache para ver se faz alguma diferença, mas ainda não vou.

    
por UrkoM 25.09.2012 / 11:46

2 respostas

0

Encontrou o problema. Não foram as regras de reescrita, embora Michael Hampton definitivamente me colocou na direção certa.

Por alguma razão, o arquivo wp-config.php tinha duas linhas muito importantes para a configuração do Multisite comentadas: PATH_CURRENT_SITE e BLOG_ID_CURRENT_SITE.

Assim que consertei isso, tudo começou a funcionar perfeitamente, e nosso site agora está brilhando rápido. Eu acho que a verdadeira questão é: como o trabalho fez isso todo esse tempo?

É isso aqui. Obrigado por assistir!

    
por 27.09.2012 / 06:13
0

Uau, você tem uma verdadeira bagunça em suas mãos.

No geral, a configuração do nginx parece boa. A única coisa que me impressionou na primeira leitura como sendo possivelmente "errado" foi a declaração try_files . Na minha produção WordPress multisite, eu tenho:

try_files $uri $uri/ index.php;

Não é necessário acrescentar args, pois o WordPress os pega em REQUEST_URI quando está disponível (quase sempre) e PATH_INFO quando não estão presentes na string de consulta.

Sim, estou ciente de que a declaração que você está usando é "recomendada" no site do WordPress. É claro que também é um wiki que qualquer um pode editar, então tem que ser feito com um pouco de sal, assim como a Wikipedia.

    
por 25.09.2012 / 16:54