2016-11-17 43 views
0

我在使用nginx的時候遇到了WordPress的固定鏈接問題。 我試圖加入我的nginx的配置文件中的以下行,但我仍然是無法獲得這些固定鏈接工作:Nginx 1.10和WordPress 3.6.1永久鏈接問題

location/{ 
try_files $uri $uri/ /en/index.php?$args; 
} 

我得到404錯誤,當我能夠在WordPress控制面板固定鏈接。

這裏是我的nginx conf文件,如果這可以幫助調查這個問題,因爲我已經嘗試了網絡上的幾乎所有東西。我想在我的配置東西是搞亂:

server { 

     server_name blog.domain.com www.blog.domain.com; 

     listen 161.122.20.14; 

     return 301 https://$server_name$request_uri; 
       ssl_certificate /home/domain/domains/blog.domain.com/ssl.cert; 
       ssl_certificate_key /home/domain/domains/blog.domain.com/ssl.key; 
     } 

     server { 
       server_name blog.domain.com www.blog.domain.com; 

       listen 161.122.20.14:443 ssl http2; 

       root /home/domain/domains/blog.domain.com/public_html; 

       index index.html index.htm index.php; 

       access_log /var/log/virtualmin/blog.domain.com_access_log; 
       error_log /var/log/virtualmin/blog.domain.com_error_log; 

     fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
       fastcgi_param SERVER_SOFTWARE nginx; 
       fastcgi_param QUERY_STRING $query_string; 
       fastcgi_param REQUEST_METHOD $request_method; 
       fastcgi_param CONTENT_TYPE $content_type; 
       fastcgi_param CONTENT_LENGTH $content_length; 
       fastcgi_param SCRIPT_FILENAME /home/domain/domains/blog.domain.com/public_html$fastcgi_script_name; 
       fastcgi_param SCRIPT_NAME $fastcgi_script_name; 
       fastcgi_param REQUEST_URI $request_uri; 
       fastcgi_param DOCUMENT_URI $document_uri; 
       fastcgi_param DOCUMENT_ROOT /home/domain/domains/blog.domain.com/public_html; 
       fastcgi_param SERVER_PROTOCOL $server_protocol; 
       fastcgi_param REMOTE_ADDR $remote_addr; 
       fastcgi_param REMOTE_PORT $remote_port; 
       fastcgi_param SERVER_ADDR $server_addr; 
       fastcgi_param SERVER_PORT $server_port; 
       fastcgi_param SERVER_NAME $server_name; 
       fastcgi_param HTTPS $https; 

       location ~ \.php$ { 
         try_files $uri =404; 
         fastcgi_pass unix:/var/php-nginx/14765596504348.sock/socket; 
       } 

       location = /favicon.ico { 
       log_not_found off; 
       access_log off; 
       } 

       location = /robots.txt { 
       allow all; 
       log_not_found off; 
       access_log off; 
       } 

     location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { 
       access_log  off; 
       log_not_found  off; 
       expires 365d; 
       } 

       location ~* /(?:uploads|files)/.*\.php$ { 
       deny all; 
       } 

       location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ { 
       return 444; 
       } 

       location ~* \.(pl|cgi|py|sh|lua)\$ { 
       return 444; 
       } 

       location ~ /(\.|wp-config\.php|readme\.html|license\.txt) { deny all; } 

     ssl_certificate /home/domain/domains/blog.domain.com/ssl.cert; 
       ssl_certificate_key /home/domain/domains/blog.domain.com/ssl.key; 
       ssl_trusted_certificate /home/domain/domains/blog.domain.com/ssl.ca; 
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
       ssl_prefer_server_ciphers on; 
       ssl_dhparam /etc/nginx/dhparam.pem; 
       ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 

       add_header Accept-Ranges bytes; 
       add_header X-Frame-Options "SAMEORIGIN" always; 
       add_header X-Content-Type-Options "nosniff" always; 
       add_header X-XSS-Protection "1; mode=block" always; 
       add_header Strict-Transport-Security "max-age=15768000" always; 
       add_header Public-Key-Pins 'pin-sha256="Niasdcu1LQAzCK234v6aJLcwJFCcWATc4asdIBhio7XpIQ="; pin-sha256="75h33riR+PAtOJcVKNfn2y1/N1ARLqJ213YDX5bnAi1Q="; max-age=2592000;'; 
     } 

回答

3

讓我們來看看您重定向服務器塊......由於的WordPress是不會允許或類似您同時使用www和根域的事實網站的網址,你必須選擇一個。讓我們假設你不想www和要使用的域本身,你第一重定向服務器塊應該是這樣的:

server { 
    listen 161.122.20.14; 
    server_name blog.domain.com www.blog.domain.com; 
    return 301 https://blog.domain.com$request_uri; 
} 

這將有效地聽上給定的IP,端口80用於兩個博客.domain.com和www.blog.domain.com將它們重定向到https://blog.domain.com

現在爲什麼我說第一個?因爲您可能希望讓另一個重定向服務器塊在www域捕獲所有https。在這種情況下,您需要確保您的服務器塊具有有效的ssl配置集。如果沒有更多的調查和採取只弗朗你的配置,你的SSL重定向應該是這樣的:

server { 
    listen 161.122.20.14:443 ssl http2; 
    server_name www.blog.domain.com; 

    ssl_certificate /home/domain/domains/blog.domain.com/ssl.cert; 
    ssl_certificate_key /home/domain/domains/blog.domain.com/ssl.key; 
    ssl_trusted_certificate /home/domain/domains/blog.domain.com/ssl.ca; 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /etc/nginx/dhparam.pem; 
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 

    return 301 https://blog.domain.com$request_uri; 
} 

現在我們確信,所有的請求要麼blog.domain.com或www.blog.domain.com是被作爲迄今爲止所採取小心,重定向,無論端口80和443上,我們的主要服務塊看起來像這樣:這裏

server { 
    listen 161.122.20.14:443 ssl http2 deferred; 
    server_name blog.domain.com; 

    root /home/domain/domains/blog.domain.com/public_html; 
    index index.html index.htm index.php; 

    access_log /var/log/virtualmin/blog.domain.com_access_log; 
    error_log /var/log/virtualmin/blog.domain.com_error_log; 

    ssl_certificate /home/domain/domains/blog.domain.com/ssl.cert; 
    ssl_certificate_key /home/domain/domains/blog.domain.com/ssl.key; 
    ssl_trusted_certificate /home/domain/domains/blog.domain.com/ssl.ca; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /etc/nginx/dhparam.pem; 
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 

    add_header Accept-Ranges bytes; 
    add_header X-Frame-Options "SAMEORIGIN" always; 
    add_header X-Content-Type-Options "nosniff" always; 
    add_header X-XSS-Protection "1; mode=block" always; 
    add_header Strict-Transport-Security "max-age=15768000" always; 
    add_header Public-Key-Pins 'pin-sha256="Niasdcu1LQAzCK234v6aJLcwJFCcWATc4asdIBhio7XpIQ="; pin-sha256="75h33riR+PAtOJcVKNfn2y1/N1ARLqJ213YDX5bnAi1Q="; max-age=2592000;'; 

    location = /favicon.ico { 
     log_not_found off; 
     access_log off; 
    } 

    location = /robots.txt { 
     allow all; 
     log_not_found off; 
     access_log off; 
    } 

    location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { 
     access_log  off; 
     log_not_found  off; 
     expires 365d; 
    } 

    location ~* /(?:uploads|files)/.*\.php$ { 
     deny all; 
    } 

    location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ { 
     return 444; 
    } 

    location ~* \.(pl|cgi|py|sh|lua)\$ { 
     return 444; 
    } 

    location ~ /(\.|wp-config\.php|readme\.html|license\.txt) { deny all; } 

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

    location ~ [^/]\.php(/|$) { 
     fastcgi_split_path_info ^(.+?\.php)(/.*)$; 
     if (!-f $document_root$fastcgi_script_name) { 
      return 404; 
     } 
     include fastcgi_params; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_pass unix:/var/php-nginx/14765596504348.sock/socket; 
    } 
} 

關鍵是你try_files並添加包含默認動作/位置塊。您還應該保存該php位置塊並將其用於將來的配置......另一個只是,如何說,不安全。實際上,這實際上可以讓你使用永久鏈接WordPress

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

    location ~ [^/]\.php(/|$) { 
     fastcgi_split_path_info ^(.+?\.php)(/.*)$; 
     if (!-f $document_root$fastcgi_script_name) { 
      return 404; 
     } 
     include fastcgi_params; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_pass unix:/var/php-nginx/14765596504348.sock/socket; 
    } 

我也想知道你把想法放在你的配置中的所有fastcgi參數..你從哪裏得到這樣的信息?

請注意,我已複製/粘貼您發佈的內容,而不檢查是否全部有效。

相關問題