2016-08-24 96 views
0

我有多個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

回答

0

我認爲你從你的新位置塊中缺少以下內容,這個〜運算符對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。我已經更新了這個問題。 –