Назад | Перейти на главную страницу

помогите с перезаписью nginx

В настройке apache я маскировал wordpress за URL-адресом /admin.

Я добился этого по следующим правилам:

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

Итак, последнее правило с nginx было довольно простым:

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

Более-менее дословно повторять.

Второе правило не кажется необходимым ... оно было только для того, чтобы нанести косую черту в конце.

Первое правило, похоже, не соблюдается. У меня есть отладочная информация вывода nginx для перезаписи, и, похоже, он ничего не пишет для URL-адресов, таких как /admin/edit.php

Вот моя полная конфигурация nginx, если там будут какие-то частички информации:

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;
    }


}

+ Изменить

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

к

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

break прекращает обработку после блока текущего местоположения, но в этом случае вам все равно понадобится location ~ \.php$ блок для обслуживания админки php. Кроме того, поскольку это регулярное выражение, вы хотите избежать литерала. перед расширением php.