2016-09-26 107 views
1

我有一个WordPress的网站,永久链接设置为发布名称。所有页面不会出现并返回一个404,除了索引。如果我将它设置为纯粹的,那么它们就会出现,但很多资源都不存在,我不知道为什么。WordPress的生活网站页面返回404错误nginx php-fpm

所以说清楚一点,如果永久链接是纯文本的,它可以正常工作,但是由于多个文件(索引除外)上有404,所以会出现很多错误。 如果永久链接是邮政名,那么整个页面是404。

这是我的htaccess文件,我的nginx配置和我的php-fpm配置。 任何人都可以看到问题吗?

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

NGINX CONF

server { 
    listen 80; 
    server_name www.example.com example.com; 
    root /var/www/example; 
    return 301 https://$server_name$request_uri; 
} 

server { 
    listen  443 ssl; 
    server_name www.example.com example.com; 
    root /var/www/example; 
    index index.php; 
    ssl_certificate /etc/nginx/ssl/example.com/example.com.crt; 
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key; 

    access_log /var/log/nginx/example.log main; 
    error_log /var/log/nginx/example_error.log; 

    location/{ 
     root /var/www/example; 
    } 

    error_page 404    /404.html; 
    location = /404.html { 
     root /usr/share/nginx/html; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 

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

} 

PHP-FPM

[example] 
listen = 127.0.0.1:9001 
listen.allowed_clients = 127.0.0.1 
user = nginx 
group = nginx 
...and some more I don't think is relevant but I can supply if asked for. 

感谢您对您的帮助!

回答

1

没有看到实际的错误或哪些文件404',我想你可能会在你的nginx配置中缺少try_files。我想看看这个: http://nginxlibrary.com/wordpress-permalinks/

此外,nginx的并不需要或想要的.htaccess: https://www.nginx.com/resources/wiki/start/topics/examples/likeapache-htaccess/

而且,我会检查,以确保您的网址在你的数据库设置正确。 (我会发布链接,但我没有代表) 我会用wp-cli做一个搜索替换。我不止一次忘记这样做,从开发转移到舞台,并有一个跆拳道的时刻。 :)

希望这一切都有帮助!

*编辑,以帮助更多的*

寻找更多进入这些教程后,他们忽略了一些细节问题。如果没有要远到它,请尝试使用更接近于这样的:

listen  443 ssl;   
    root /var/www/example; 
    index index.php index.html index.htm; 

    server_name www.example.com example.com; 

    ssl_certificate /etc/nginx/ssl/example.com/example.com.crt; 
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key; 

    access_log /var/log/nginx/example.log main; 
    error_log /var/log/nginx/example_error.log; 

    location/{ 
      try_files $uri $uri/ /index.php?q=$uri&$args; 
    } 

    error_page 404    /404.html; 
    location = /404.html { 
     root /usr/share/nginx/html; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 

    location ~ \.php$ { 
       try_files $uri =404; 
       fastcgi_split_path_info ^(.+\.php)(/.+)$; 
       fastcgi_pass 127.0.0.1:9001; 
       fastcgi_index index.php; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
       include fastcgi_params; 
    } 

这是你所拥有的一个组合,我跑的配置。让我知道它是如何为你做的。

+0

非常感谢! nginx配置工作完美:) 我错过了。我一直使用apache,所以nginx对我来说是新的! 现在只是想知道为什么整个图像文件夹返回404即使路径是正确的! 谢谢! – Mark

+0

嗨马克,我编辑了我的答案,让你更接近我个人使用的东西。在我进一步阅读之后,在这些教程中还是缺少了一些东西。试试看看它是否有助于nginx找到这些图像。干杯! – jkgaddis

+0

谢谢!但不幸的是没有:(没有图像,我会找出来,如果我有麻烦,我会再次发布。 感谢您的帮助! – Mark