Nginx

nginx子目錄萬用字元重寫

  • July 3, 2016

我已經在我的 nginx 伺服器上設置了一個伺服器塊,例如域testsite.com。我希望能夠將單獨的 WordPress 安裝安裝到根文件夾的直接子文件夾中,例如 /var/www/html/testsite.com/ childfolder1、 /var/www/html/testsite.com/ childfolder2等,所以他們可以通過 testsite.com/ childfolder1、 testsite.com/ childfolder2等訪問。

創建重定向的手動方法是像這樣插入它:

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

並為每個站點重複它。使用location /僅涵蓋根目錄。有沒有辦法創建一個(正則表達式?)萬用字元規則,上面寫著:“對於每個直接子目錄,應用這個 try_files 命令”(這對於 WordPress 來說顯然總是相同的,只是文件夾名稱發生了變化)?

location /*anydirectsubdirectory* {
   index index.php;
   try_files $uri $uri/ /*anydirectsubdirectory*/index.php?$args;
}

我無法證明您想要做的事情是否有效,但下面是將您的“虛擬碼”轉換為實際的 nginx 配置(如果同樣的複制粘貼解決方案對您有效,這也應該繼續有效)。

location ~ /(?<anydirectsubdirectory>[^/]+) {
   index index.php;
   try_files $uri $uri/ /$anydirectsubdirectory/index.php?$args;
}

試試這個~

server { listen 80; server_name example.com; charset utf-8; access_log logs/xxxxxx.access.log;

root   /var/www/html;

index index.php;
location = / { return 301 /cn/; }

location / {
   try_files $uri $uri/ /cn/index.php?q=$uri;
}
location /en {
   try_files $uri $uri/ /en/index.php?q=$uri;
}
location /my {
   try_files $uri $uri/ /my/index.php?q=$uri;
}
location ~ \.php$ {
   try_files $uri =404;
   fastcgi_pass   127.0.0.1:9000;
   include        fastcgi_params;
   fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
}

}

引用自:https://serverfault.com/questions/787291