nginx and wordpress permalink settings

Discussion in 'General' started by onastvar, May 31, 2012.

  1. onastvar

    onastvar Member

    I've added the following to nginx Directives for mysite

    Code:
    location / {
                    try_files $uri $uri/ /index.php?$args;
           }
    Any wordpress permalink settings besides default I get error
    "ERROR 404 - Not Found!"

    I followed The Perfect Server - Debian Squeeze (Debian 6.0) With BIND, Dovecot & Nginx [ISPConfig 3] to setup my server
    The Perfect Server - Debian Squeeze (Debian 6.0) With BIND, Dovecot & Nginx [ISPConfig 3]

    Permalink Settings (Settings > Permalinks) structure is

    /%year%/%monthnum%/%day%/%postname%/

    My vhost file looks like this:

    Code:
    server {
            listen *:80;
    
    
            server_name example.com www.example.com;
    
            root   /var/www/example.com/web;
    
    
    
            index index.html index.htm index.php index.cgi index.pl index.xhtml;
    
    
    
            error_page 400 /error/400.html;
            error_page 401 /error/401.html;
            error_page 403 /error/403.html;
            error_page 404 /error/404.html;
            error_page 405 /error/405.html;
            error_page 500 /error/500.html;
            error_page 502 /error/502.html;
            error_page 503 /error/503.html;
            recursive_error_pages on;
            location = /error/400.html {
                internal;
            }
            location = /error/401.html {
                internal;
            }
            location = /error/403.html {
                internal;
            }
            location = /error/404.html {
                internal;
            }
            location = /error/405.html {
                internal;
            }
            location = /error/500.html {
                internal;
            }
            location = /error/502.html {
                internal;
            }
            location = /error/503.html {
                internal;
            }
    
            error_log /var/log/ispconfig/httpd/example.com/error.log;
            access_log /var/log/ispconfig/httpd/example.com/access.log combined;
    
    
            ## Disable .htaccess and other hidden files
            location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
            }
    
            location = /favicon.ico {
                log_not_found off;
                access_log off;
            }
    
            location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
            }
    
            location /stats {
                index index.html index.php;
                auth_basic "Members Only";
                auth_basic_user_file /var/www/clients/client0/web1/.htpasswd_stats;
            }
    
            location ^~ /awstats-icon {
                alias /usr/share/awstats/icon;
            }
    
            location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass 127.0.0.1:9010;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_script_name;
                fastcgi_intercept_errors on;
            }
    
    
    		
    }
    Any ideas how to make nginx work with wordpress?

    Thanks!
     
  2. falko

    falko Super Moderator

    I have this in my nginx Directives field:
    Code:
           location / {
                    try_files $uri $uri/ /index.php?$args;
           }
    
           # Add trailing slash to */wp-admin requests.
           rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    
           location ~*  \.(jpg|jpeg|png|gif|css|js|ico)$ {
                    expires max;
                    log_not_found off;
           }
     
  3. onastvar

    onastvar Member

    Thanks Falko, that worked!

    Do you know how long it takes ISPConfig to process the
    change I make in DNS, nginx directives, etc?
     
  4. falko

    falko Super Moderator

    The backend processes changes once per minute.
     
  5. onastvar

    onastvar Member

    I'm using following nginx directives for one web site (i.e. http://domain1.com/) which is WordPress

    Code:
    location / {
                    try_files $uri $uri/ /index.php?$args;
           }
    
           # Add trailing slash to */wp-admin requests.
           rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    
           location ~*  \.(jpg|jpeg|png|gif|css|js|ico)$ {
                    expires max;
                    log_not_found off;
           }
    Anyone knows, how can I make another wordpress site works under the same domain, just another folder
    (i.e. http://domain1.com/test/site1) ?

    Thanks!!!
     
  6. onastvar

    onastvar Member

  7. falko

    falko Super Moderator

    Try

    Code:
           location /test/site1 {
                    try_files $uri $uri/ /test/site1/index.php?$args;
           }
    
           # Add trailing slash to */wp-admin requests.
           rewrite /test/site1/wp-admin$ $scheme://$host$uri/ permanent;
     
  8. onastvar

    onastvar Member

    Thank You Falko! This worked perfectly.
     
  9. Ovidiu

    Ovidiu Active Member

    Thanks Falko, that worked perfectly except for one minor annoyance:

    if I visit my backend I mysite.tld/wp-admin/index.php the drop-down/hover menus in the backend menu don't work.
    If I visit mysite.tld/wp-admin/ everything works perfectly. can we somehow strip the index.php from dashboard URLs?
     

Share This Page