Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nginx giving 404 error for WordPress' /wp-admin/ root

I have a Symfony2 application running alongside WordPress - mysite.com/blog routes to my /var/www/mysite/wordpress/ directory and everything else routes to /var/www/mysite/symfony:

server {
    listen 80;
    server_name mysite.com

    location / {
        try_files $uri /app.php$is_args$args;
    }

    location ~ ^/app\.php(/|$) {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        internal;
    }

    location /blog {
        root /var/www/mysite/wordpress;
        rewrite ^/blog/(.+)$ /$1 break;
        try_files $uri $uri/ /blog/index.php?q=$uri&$args;
        index index.php;

        location ~ \.php {
            fastcgi_pass 127.0.0.1:9000;
            include fastcgi_params;
            fastcgi_split_path_info ^(?:\/blog)(.+\.php)(.*);
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
}

Everything works fine, except the WordPress admin (mysite.com/blog/wp-admin/) gives me a 404 error. Visiting mysite.com/blog/wp-admin/index.php works as expected, so it looks like the index index.php line is not working. What could be the issue here?

like image 887
Jonathan Avatar asked Nov 27 '25 11:11

Jonathan


1 Answers

You should use alias instead of root directive:

location ^~ /blog {
    alias /var/www/mysite/wordpress;
    index index.php;

    try_files $uri $uri/ /blog/index.php?q=$uri&$args;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_split_path_info ^(?:\/blog)(.+\.php)(.*);
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
like image 128
Valery Viktorovsky Avatar answered Nov 30 '25 04:11

Valery Viktorovsky



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!