help with nginx reescreva

2

Em uma configuração do apache, eu estava mascarando o wordpress por trás do url /admin .

Eu consegui isso com as seguintes regras:

RewriteRule admin/(.*).php wordpress/wp-admin/$1.php [L]
RewriteRule /admin$ admin/ [L,R=301]
RewriteRule ^admin/$ wordpress/wp-admin/index.php [L]

Então, a última regra foi bem fácil com o nginx:

rewrite ^/admin/$ /wordpress/wp-admin/index.php last;

Mais ou menos uma palavra por palavra se repete.

A segunda regra não parece ser necessária ... só estava lá para forçar uma barra no final.

A primeira regra não parece estar melhorando. Eu estou tendo informações de depuração de saída nginx para reescrever, e parece não escrever nada lá para URLs como /admin/edit.php

Aqui está toda a configuração do nginx, se houver algumas informações:

worker_processes  1;
events {
    worker_connections  1024;
}

error_log    /var/log/file.log notice;

http {
    rewrite_log  on;
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
       listen       80;
       server_name  localhost;

       location / {
        root   /home/meul/site/htdocs/web;
        index  index.php index.html index.htm;

        if (-f $request_filename) {
          expires max; 
          break; 
        }

        rewrite ^/admin/(.*).php$  /wordpress/wp-admin/$1.php break;
        rewrite ^/admin/$ /wordpress/wp-admin/index.php last;

        if ($request_filename !~ "\.(js|htc|ico|gif|jpg|png|css)$") {
          rewrite ^(.*) /index.php last;
        }
    }



    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/local/www/nginx-dist;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /home/meul/site/htdocs/web$fastcgi_script_name;
        include        fastcgi_params;
    }


}
    
por blockhead 18.08.2010 / 22:57

1 resposta

1

Alterar

rewrite ^/admin/(.*).php$  /wordpress/wp-admin/$1.php break;

para

rewrite ^/admin/(.*)\.php$  /wordpress/wp-admin/$1.php last;

break pára o processamento após o bloco de localização atual, mas neste caso você ainda precisa do bloco location ~ \.php$ para servir o admin php. Além disso, como isso é um regex, você quer escapar do literal. antes da extensão do php.

    
por 19.08.2010 / 18:42

Tags