更正安装在非根目录下的WordPress的nginx虚拟主机?

假设我的主域是example.com。 我在域上安装SSL,并且可以成功访问域。 我的首选版本是使用www,所以所有的请求将被redirect到https://www.example.com

这是我迄今为止所做的,并且在访问根域时效果很好。

  # redirect HTTP to HTTPS server { listen 80; server_name example.com www.example.com; rewrite ^ https://$server_name$request_uri? permanent; } # SSL conf server { root /var/www/example.com; index index.html index.htm index.php; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; listen 443 ssl spdy; server_name example.com www.example.com; ssl_certificate /etc/ssl/example.com/certificate/join-cert.crt; ssl_certificate_key /etc/ssl/example.com/server-key/ssl.key; # Redirect non-www to www if ($host = 'example.com' ) { rewrite ^/(.*)$ https://www.example.com/$1 permanent; } location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } 

麻烦的是,我在不同的目录下安装wordpress。 比方说https://www.example.com/blog/ 。 但我无法访问任何文章( https://www.example.com/blog/artcle1/ )。 我使用CloudFlare,它说:“您正在寻找的页面无法find”。

请build议我正确的虚拟主机。

注意:我知道在根目录下安装wordpress并将wordpress设置的主页更改为https://www.example.com/blog/是很容易的。 我不想这样做,因为我的根域上有Flash。 我会保留我的wordpress在那个目录。

首先,您正在以非常复杂的方式将非wwwredirect到wwwredirect。 你应该这样做:

 server { listen 443 ssl spdy; server_name example.com; ssl_certificate /etc/ssl/example.com/certificate/join-cert.crt; ssl_certificate_key /etc/ssl/example.com/server-key/ssl.key; return 301 https://www.example.com$request_uri; } 

然后你遇到的实际问题,这个configuration应该修复它:

 server { root /var/www/example.com; index index.html index.htm index.php; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; listen 443 ssl spdy; server_name www.example.com; ssl_certificate /etc/ssl/example.com/certificate/join-cert.crt; ssl_certificate_key /etc/ssl/example.com/server-key/ssl.key; location /blog { try_files $uri $uri/ /blog/index.php?$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } 

所以,我们在这里改变redirect到/blog URI。 此外,您需要将Wordpress根URL设置更改为https://www.example.com/blog ,否则Wordpress将无法正确识别WP安装中的位置。