Nginx中多个子目录下WordPress的rewrite规则

首先推荐一个很有意思的VPS面板:VPSMate,目前作者已完成了主体功能,它的特点很突出:

  • 安装、卸载简单;
  • 占用资源小,内存占用一般可以控制在20~50MB;
  • 界面交互明晰,操作体验流畅。

目前只有hilyjiang独自开发,不过版本发布稳定,作者本人也常在官方论坛中解答用户的提问。
回到题目本身,Nginx相对Apache而言的优点不必多言,当在站点下多个子目录中需要安装WordPress时,它的rewrite规则可以这样写:

目录所在的location中,写上如下规则:

  if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
  }
 
  if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php last;
  }
 
  if (!-f $request_filename){
    rewrite (.*) /web/index.php last;
  }

在VPSMate,会看到以下内容,但请注意,直接写入是无效的!

1. 在站点根目录下,勾选了「在该路径下启用 Rewrite」和「仅当文件不存在时启用 Rewrite」,并有以下规则:

rewrite ^(.+)$ /index.php?q=$1 last;

vpsmate-nginx-1

2. 添加需要的子目录,如/web/,仅勾选勾选「在该路径下启用 Rewrite」,并有以下规则:

rewrite (.*) $1/index.html break;
rewrite (.*) $1/index.php last;
rewrite (.*) /web/index.php last;

vpsmate-nginx-2

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注