Nginx子目录安装wordpress建站系统rewrite的一种写法

为了把站点都加上ssl。这周真是费了很大的功夫。手上所有的站都是当初初生牛犊yum安装配置的apache。全没有支持ssl的模块。
然后在班导大佬的帮助下,给我演示了一遍编译安装nginx。然后替我配置好了博客的ssl。
然后这几天就将其他站点也都配置上了ssl。
其中,一个wp站在子目录下还装了一个wp。因为换成了nginx。不支持子目录下的域名重写了。导致这个子目录下的站除了首页能正常打开,其他页面全被重写到了错误的地址。
(这个问题我隔了一天才发现,大过啊= =,所以以后每次对服务器做任何影响web的修改,一定要检查一次网站的所有主要页面和功能是否正常。。)
不废话了,我直接贴上那个站点的配置文件。

server {
    listen       443;
    server_name  xxxxxx.com www.xxxxxx.com;
    if ($host = 'xxxxxx.com'){
           rewrite ^/(.*)$ https://www.xxxxxx.com/$1 permanent;
    }
    ssl on;
        ssl_certificate vhost/cert/www.xxxxxx.com/xxxxxx.pem;
        ssl_certificate_key vhost/cert/www.xxxxxx.com/xxxxxx.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;


    index index.html index.htm index.php;
    root /var/www/root/xxxxxx.com/;
    
    access_log  logs/host.access.log;

    include enable-php.conf;
    #error_page  404              /404.html;
    #error_page   500 502 503 504  /50x.html;

    #location / {
    #    root   html;
    #    index  index.html index.htm;
    #}
    
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /\.
    {
        deny all;
    }
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    
    location /shop/ {
    root   /var/www/root/xxxxxx.com;
    index  index.php index.html index.htm;
    if (!-e $request_filename) {
       rewrite ^.+/?(/shop/wp-.*) $1 last;
       rewrite ^.+/?(/shop/.*\.php)$ $1 last;
       rewrite ^(.+)$ /shop/index.php?q=$1 last;
    }
    
    
}
    access_log logs/xxxxxx_access.log;
    error_log logs/xxxxxx_error.log;
}

这是该站点的https配置。其中支持子目录重写的部分就是这段

location /shop/ {
        root   /var/www/root/xxxxxx.com;
        index  index.php index.html index.htm;
        if (!-e $request_filename) {
           rewrite ^.+/?(/shop/wp-.*) $1 last;
           rewrite ^.+/?(/shop/.*\.php)$ $1 last;
           rewrite ^(.+)$ /shop/index.php?q=$1 last;
        }

子目录为shop,在shop目录下安装的第二个wp。
然后找葫芦画瓢填好location然后上传覆盖重启nginx这个问题就完美解决啦!
讲道理,前几天才上手nginx我觉得好尴尬。出现问题了解决的思路都想不到= =

添加新评论