Wordpress 中的永久链接不适用于 Laravel + Nginx

Posted

技术标签:

【中文标题】Wordpress 中的永久链接不适用于 Laravel + Nginx【英文标题】:Permalinks in Wordpress not working with Laravel + Nginx 【发布时间】:2016-05-18 16:02:39 【问题描述】:

我在主要路线上使用 Laravel 开发了一个网站,例如 www.example.com/。我已经使用 nginxphp-fpm 正确配置了它。我的配置如下。

然后我在路由/blogwww.example.com/blog/)中添加了一个博客,并使用Nginx alias进行了配置。

现在的问题是 Wordpress 中的永久链接不起作用。 Nginx 重定向到 Laravel 的 404 页面。

例如,当用户输入这样的 URL:example.com/blog/about,Laravel 的 404 页面就会出现,这很奇怪。

我该如何解决这个问题?如何配置 Nginx?怎么了?

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;
        
    

【问题讨论】:

【参考方案1】:

假设你在你的服务器上运行 laravel,并且你想使用 wordpress 作为博客。并且您在名为文件夹的博客中安装了 wordpress。然后你必须在 3 个地方进行更改

1) laravel .htaccess file
2) blogs folder .htaccess file
3) nginx configuration file

    Laravel.htaccess 文件更改添加这一行

    RewriteCond %REQUEST_URI !^/blogs/

    blogs 文件夹.htaccess 文件添加此代码或修改

    重写引擎开启 RewriteBase /blogs/ #

    在 nginx 配置文件中尝试修改端口 80 和端口 443 代码块中的以下代码

     location /blogs 
     try_files $uri $uri/ /blogs/index.php?$args;
     set                     $base /var/www/html;
     root                    $base/public;
    
    
    
     location ~ \.php$ 
    
         fastcgi..
    
     
    

【讨论】:

【参考方案2】:

location 与别名路径的结尾匹配时,您不需要使用alias。见this document。

location /blog 中的 try_files 需要默认为 WordPress 路由器 (/blog/index.php) 而不是 Laravel 路由器 (/index.php)。

试试:

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;
    

【讨论】:

谢谢。现在可以了。我用try_files $uri $uri/ /blog/index.php?$args;alias。它没有用。但是当删除别名时它工作正常。

以上是关于Wordpress 中的永久链接不适用于 Laravel + Nginx的主要内容,如果未能解决你的问题,请参考以下文章

更新 httpd.conf 不适用于永久链接

WordPress 下一组/上一组帖子不适用于我的主题

WordPress 永久链接仅适用于帖子

更新 WordPress 中的永久链接

PHP 更新WordPress中的永久链接

sql 在wordpress安装/迁移后编辑wordpress页面内容中的永久链接