PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Saturday, January 8, 2022

[FIXED] Permalinks in Wordpress not working with Laravel + Nginx

 January 08, 2022     laravel, nginx, php, wordpress     No comments   

Issue

I have a site developed with Laravel on my main route say www.example.com/. I have configured it properly with Nginx and php-fpm. My config is below.

Then I added a blog in route /blog (www.example.com/blog/) and configured it with Nginx alias.

Now the problem is that Permalinks in Wordpress are not working. Nginx redirects to Laravel's 404 page.

For example when user enters some URL like this: example.com/blog/about, Laravel's 404 page shows up which is weird.

How can I fix this? How can I config Nginx? What's Wrong?

server {
    listen       80;
    server_name  example.com;
    root /usr/share/nginx/html/;

    location /blog {
        try_files $uri $uri/ /index.php?$args;
        alias /usr/share/nginx/blog/;
        index  index.php index.html index.htm;

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME   /usr/share/nginx$fastcgi_script_name;
        }
    }

    location / {
        root   /usr/share/nginx/main_site;
        index  index.php index.html index.htm;

        try_files $uri $uri/ /index.php$is_args$args;

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

Solution

You do not need to use alias when the location matches the end of the alias path. See this document.

The try_files in location /blog needs to default to the WordPress router (/blog/index.php) and not the Laravel router (/index.php).

Try:

location /blog {
    try_files $uri $uri/ /blog/index.php?$args;
    root /usr/share/nginx;
    ...

    location ~ \.php$ {
        ...
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    }
}


Answered By - Richard Smith
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing