带nginx的Wordpress多站点。匹配位置内的子目录

问题描述:

我有多个WordPress网站在子目录中运行。带nginx的Wordpress多站点。匹配位置内的子目录

一切正常,但我正在寻找简化我的nginx配置。

目前,当我添加一个位置时,我需要为指定的目录添加一个条目到我的服务器配置。

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

    location /site1 { 
     try_files $uri $uri/ /site1/index.php?q=$args; 
    } 

    location /site2 { 
     try_files $uri $uri/ /site2/index.php?q=$args; 
    } 

    location /site2 { 
     try_files $uri $uri/ /site3/index.php?q=$args; 
    } 

    location /site4 { 
     try_files $uri $uri/ /site4/index.php?q=$args; 
    } 

我试着添加一个正则表达式来匹配子目录,但似乎有一个问题。

location /([_-0-9a-zA-Z]/?) { 
    try_files $uri $uri/ /$1index.php?q=$args; 
    } 

似乎没有办法。理论上应该匹配一个子目录,或者什么都不匹配,并且能够让我添加新的目录而不必触摸nginx配置。

任何指针,将不胜感激。

@jedifans指出,如何让正则表达式的工作

感谢。这在任何页面上都有窍门,但是当我去/它只是试图下载index.php。

location ~ \.php$ { 
    try_files $uri =404; 

    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    include fastcgi_params; 
    fastcgi_pass php70; 
    fastcgi_keep_conn on; 
} 

location ~ ^/([_\-0-9a-zA-Z]*/?) { 
    try_files /$1$uri /$1$uri/ /$1index.php?q=$args; 
} 

但是,当我去domain.com/site1/我得到的index.php不是主页的下载。少了什么东西?

+0

我已经更新了我的答案。 – jedifans

我认为你从你的新位置块中缺少以下内容,这个〜运算符对nginx表示它是一个正则表达式。尝试:

location ~ ^/([_-0-9a-zA-Z]*/?) { 

几个正则表达式的调整也^说它必须以/和*内匹配的字符超过一个[和]

编辑:你的问题更新后,尝试以下try_files指令:

try_files $uri $uri/ /$1/index.php?q=$args; 

$ URI应该不匹配的字符串工作前置,我已经加了/在匹配查询和index.php文件之间;

此外请确保index index.php;server{}级别。

+0

谢谢。这在任何页面上都有窍门,但是当我去/它只是试图下载index.php。我已经更新了这个问题。 –