我已经在我的 nginx 服务器上设置了一个服务器块,例如使用域名测试站点。我希望能够将单独的 WordPress 安装到根文件夹的直接子文件夹中,例如 /var/www/html/testsite.com/子文件夹1,/var/www/html/testsite.com/子文件夹2等等,这样他们就可以通过 testsite.com/ 访问子文件夹1, 测试站点.com/子文件夹2ETC。
创建重定向的手动方式是像这样插入它:
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;
}
答案1
我无法证明您想要做的事情是否可行,但下面是将您的“伪代码”转换为实际的 nginx 配置(并且假设同样的复制粘贴解决方案适合您,那么这也应该继续有效)。
location ~ /(?<anydirectsubdirectory>[^/]+) {
index index.php;
try_files $uri $uri/ /$anydirectsubdirectory/index.php?$args;
}
答案2
试试这个〜
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;
}
}