2016-11-17 8 views
0

Ich habe Problem mit WordPress Permalinks, während ich nginx benutze. Ich habe versucht, die folgende Zeile in meinem nginx config-Datei hinzufügen, aber noch bin ich nicht in der Lage diese Permalinks zu bekommen arbeiten:Nginx 1.10 und WordPress 3.6.1 Permalink Problem

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

Ich erhalte 404-Fehler, wenn ich Permalinks in Wordpress Control Panel aktivieren.

Hier ist meine Nginx Conf-Datei, wenn dies helfen könnte, das Problem zu untersuchen, wie ich fast alles im Web ausprobiert habe. Ich denke, etwas in meiner config vermasselt:

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;'; 
     } 

Antwort

3

Lassen Sie uns an Ihren Redirect Server Block aussehen ... Da Wordpress nicht gehen zu lassen oder wie die Tatsache, dass Sie sowohl www und Root-Domain verwenden für Website-URL, müssen Sie eine auswählen. Nehmen wir an, Sie nicht über die www wollen und die Domain selbst verwenden, Ihre ersten Redirect Server Block würde wie folgt aussehen:

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

Dies würde auf dem gegebenen ip effektiv hören, Port 80 für beide Blog .domain.com und www.blog.domain.com umleiten sie zu https://blog.domain.com

Jetzt warum habe ich gesagt zuerst? Weil Sie vielleicht einen anderen Redirect-Server-Block haben möchten, um alle https unter www domain abzufangen. In diesem Fall müssen Sie sicherstellen, dass Ihr Server-Block eine gültige SSL-Konfiguration hat. Ohne weitere Untersuchung und nur fron Ihre Konfiguration nehmen, würde Ihre ssl Umleitung wie folgt aussehen:

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; 
} 

jetzt, dass wir sicher sind, dass alle Anfragen an entweder blog.domain.com oder www.blog.domain.com werden umsorgt bis Umleitung, sowohl auf Port 80 und 443, würde unser Hauptserver-Block wie so aussehen: ein/Standort Block enthält die Standardaktion

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; 
    } 
} 

Key Ihre try_files hier ist und das Hinzufügen. Sie sollten diesen php-Standortblock auch speichern und für zukünftige Konfigurationen verwenden ... der andere war nur, wie gesagt, unsicher. Dies ist im Wesentlichen, was Ihnen erlaubt, Permalinks mit WordPress zu verwenden.

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; 
    } 

Ich frage mich auch, wo Sie auf die Idee gekommen .. alle fastcgi params in der Config zu setzen, wo hast du solche Informationen bekommen?

Wohlgemerkt, ich habe kopiert/eingefügt von dem, was Sie gepostet, ohne zu prüfen, ob alles gültig war.