Я установил серверный блок на своем сервере 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;
}
}