WordPress 3.0 & nginx - permalink, 404 problem

前端 未结 8 2067
清歌不尽
清歌不尽 2021-02-08 16:26

I\'ve installed nginx, FastCGI and PHP on my server. WordPress 3.0 installed after a bit of a monster battle, but it\'s installed and working well.

However, when I chang

相关标签:
8条回答
  • 2021-02-08 16:34

    this does not work if you are using location other than / like:

    ~ .php$, what i meant to say that pretty link will work but your graphics will be all over the place. so what you need is exactly stated below.

    http://www.pearlin.info

      location ~ \.php$
    
    
    
       {
            try_files $uri $uri/ /index.php?$uri&$args;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    
      if (!-e $request_filename){
        rewrite ^(.*)$ /index.php?url=$1 break;
      }
    
    0 讨论(0)
  • 2021-02-08 16:37

    Have you tried the nginx Compatibility plugin?

    Plus ElasticDog seems to provide a fairly concise article on getting WP working with nginx - which includes getting pretty permalinks to work.

    Here's another article that seems to deal specifically with nginx rewrite rules for WordPress.

    0 讨论(0)
  • 2021-02-08 16:42

    On your location / block,

    add this and remove any non-specific rewrite rules:

    try_files $uri $uri/ /index.php;
    
    0 讨论(0)
  • 2021-02-08 16:43

    If wordpress is on another directory besides the root, instead of having

    if (!-e $request_filename) {
        rewrite ^/wordpress/(.+)$ /wordpress/index.php?q=$1 last;
    }
    

    You can have:

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

    This page has exactly the same concept. I should have read and tried it first: nginx rewrite rule under a subdirectory

    0 讨论(0)
  • 2021-02-08 16:50

    After much pain:

    # if filename doesn't exist, take the request and pass to wordpress as a paramater
             if (!-e $request_filename) {
                    rewrite ^/wordpress/(.+)$ /wordpress/index.php?q=$1 last;
             }
    

    If the requested file does not exist, pass it to index.php. It's a bit slow and I think I might try and not use a query, but it does work... :)

    0 讨论(0)
  • 2021-02-08 16:51

    This was how I solved my permalinks in my wordpress blogs in dreamhost.

    Inside the folder /home/ftpusername/nginx/example.com/ (if you don't have it, create it)
    created the file nginx.conf with the following content

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

    restarted the nginx
    /etc/init.d/nginx reload

    Some notes:
    ftpusername and example.com MUST be changed according to your system.

    That was it!
    Good luck for u all.

    0 讨论(0)
提交回复
热议问题