2016-09-26 101 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