WordPress.org

Ready to get started?Download WordPress

Forums

[resolved] Nginx Rewrite Rule for WordPress 3 (Multisite) (16 posts)

  1. milordk
    Member
    Posted 4 years ago #

    Since the number of those who use Nginx is growing rapidly .. there is a sense on the part of developers to offer WP rewrite's not just for Apache, but for Nginx!

    Fragment of a working configuration for WordPress 3 Multisite - Subdomain (blogname.domain.ltd)

    location /
    {
    root /../..;
    index index.php;
    rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1;
    if (!-e $request_filename)
    {
    rewrite ^.+?/?(/wp-.*) $1 last;
    rewrite ^(.+)$ /index.php;
    }
    }

    The question remains to Subfolder... any ideas? ..

  2. At a Wild A** guess based on the standard ....

    location /
    {
    root /../..;
    index index.php;
    rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$2;
    rewrite ^.*/wp-admin(.*) $1wp-admin/;
    
    if (!-e $request_filename)
    {
    rewrite ^.+?/?(/wp-.*) $1 last;
    rewrite ^.+?/?(.*\.php) $1 last;
    rewrite ^(.+)$ /index.php;
    }
    }

    Mind you... I'm not sure about the $1 and $2s in there, since they're different from what you'd expect in RegExp for .htaccess....

  3. milordk
    Member
    Posted 4 years ago #

    Gives 50x error .. in logs talking about "Rewrite or internal redirection cycle while processing /wp/admin/".
    If you comment out - issue an administrative panel, but without the style and script ( .php is ignored - load-styles.php ex.)

  4. milordk
    Member
    Posted 4 years ago #

    WP MS Subfolders rules for apache:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
  5. milordk
    Member
    Posted 4 years ago #

    Andrea_r,
    According to the proposed link does not even hint at the issues raised:)

    By the way
    define ('WP_ALLOW_MULTISITE', true);
    Network does not add to the menu administration panel ... On a clean installation - this option performs its function.

    Brute-force options for rules - images and styles are loaded, but the administrative panel is not the main blog:
    http://s42.radikal.ru/i098/1010/dc/b8433af64dd5.jpg

    The sites themselves are loaded .. images and styles normally displayed

    Version of the rules was taken from here: http://developersmind.com/2010/05/17/enable-multi-site-in-wordpress-3-0/

    #on server block
    ##necessary if using a multi-site plugin
    server_name_in_redirect off;
    ##necessary if running Nginx behind a reverse-proxy
    port_in_redirect off;
    
    rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
    if (!-e $request_filename) {
     rewrite ^.+?(/wp-.*) $1 last;
     rewrite ^.+?(/.*\.php)$ $1 last;
     rewrite ^ /index.php last;
    }

    update:
    That is what is given in direct address to the:
    wp-admin/network.php
    > Panel, a network is not designed for networks of WordPress MU.

  6. By the way
    define ('WP_ALLOW_MULTISITE', true);
    Network does not add to the menu administration panel ... On a clean installation - this option performs its function.

    Well ... yeah.

    Read http://codex.wordpress.org/Create_A_Network for how to add the menu.

    The URL andrea pointed you to was the old MU stuff, which is an archive of information that is still useful, if not current. You can glean information off those old posts, and use it to sort out what the right one should be.

    Read this: http://blog.delacelle.com/post/2010/06/23/nginx-rewrites-rules-for-wordpress-3-multi-blog-php-fpm/ see if it helps.

    Sadly, I'm not nginx savvy (why couldn't they just teach it to use .htaccess? *sigh)

  7. milordk
    Member
    Posted 4 years ago #

    ipstenu

    With WordPress MU familiar yet with the version 2.6.x .. The problem is that he never had to deal with subfolders;)

    Learn to work with. Htaccess is not possible, at least, Igor Sysoev - strongly emphasizes the harm of this approach as a rewrite:)

  8. WPMU IS WordPress Multisite, for all code purposes. You're going to have to experiment, or find someone savvy with converting htaccess to nginx.conf

  9. milordk
    Member
    Posted 4 years ago #

    The proposed rules on the link - should be approached .. But! do not fit:)

  10. @milordk I run an Nginx server. in subfolders.

    the link I gave to search the old MU forums will lead you to the right answers.

  11. milordk
    Member
    Posted 4 years ago #

    Andrea_r,
    You might result code settings on your site?

  12. milordk
    Member
    Posted 4 years ago #

    The proposed solution above all still working! Necessary to section location ~* \.php$
    to rewrites .. (On the subdomain problems logical not)

    Final decision for WP MS Subfolders:

    if (!-e $request_filename) {
     rewrite ^.+?(/wp-.*) $1 last;
     rewrite ^.+?(/.*\.php)$ $1 last;
     rewrite ^ /index.php last;
    }
    
    location ~ \.php$
    {
    root /../;
    index.php;
    ..
    }
    
    location /
    {
    root /../;
    index.php;
    rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
    ..
    }
  13. Matthew
    Member
    Posted 4 years ago #

    I don't mean resurrect an old, but I am. I'm trying to set up nginx + php5-fpm with an upgraded subfolder WPMU to 3.0.

    I tried the rewrite rules here, but when I try to load http://domain.com/blog/wp-admin it will redirect to http://domain.com/wp-admin/, but if I load http://domain.com/blog/wp-admin/ it works.

    Well, it kind of works. None of the CSS or JS loaded with load-styles.php or load-scripts.php works.

    The load-styles/load-scripts works on the home blog and on domain mapped blogs though. I'm at a loss. Maybe the linked rewrite rules are more for subdomains? I don't full grasp the syntax.

  14. cogmios
    Member
    Posted 3 years ago #

    How can I make different log files for each of the dozens of domain names pointing to my server when i don't want to create dozens of seperate server "blocks" in the configuration file?

  15. ShinichiN
    Member
    Posted 3 years ago #

    Hi!

    Thanks for the information on this topic.
    I read through but I can't fix a permalink problem...

    http://wordpress.org/support/topic/permalink-problem-on-nginx?replies=3#post-2294376
    I have made a question up here, but I get no answers..

    I get a extra index.php/ slug only at the main site...

    Is there anyone who have had the same problem or some one who knows how to fix it?

    my code is here,,,
    (It's the whole nginx.conf file)

    user              nginx;
    worker_processes  2;
    error_log  /var/log/nginx/error.log;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        #tcp_nopush     on;
        keepalive_timeout  3;
        #gzip  on;
        client_max_body_size 13m;
        index       index.php index.html index.htm;
    
        server {
            listen       80;
            server_name  *.example.com;
            root    /var/www/vhosts/example.com;
    #       if($http_host != "example.com"){
    #               rewrite ^ http://example.com$request_uri permanent;
    #       }
    
            # tried to get rid of index.php/ slug from main site (not worked)
            # rewrite ^index\.php/(.*) $1 last;
    
            location = /favicon.ico {
                log_not_found off;
                access_log off;
            }
            location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
            }
            location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
            }
    
            # multi site rule
            location / {
                try_files $uri $uri/ /index.php?$args;
            }
            rewrite /wp-admin$ $scheme://$host$uri/ permanent;
            location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires 24h;
                log_not_found off;
            }
            rewrite /files/$ /index.php last;
            set $cachetest "$document_root/wp-content/cache/ms-filemap/${host}${uri}";
            if ($uri ~ /$) {
                set $cachetest "";
            }
            if (-f $cachetest) {
                rewrite ^ /wp-content/cache/ms-filemap/${host}${uri} break;
            }
            if ($uri !~ wp-content/plugins) {
                rewrite /files/(.+)$ /wp-includes/ms-files.php?file=$1 last;
            }
            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$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/vhosts/example.com$fastcgi_script_name;
                include        fastcgi_params;
            }
        }
        include /etc/nginx/conf.d/*.conf;
    }

Topic Closed

This topic has been closed to new replies.

About this Topic