Назад | Перейти на главную страницу

перезапись подстановочного знака подкаталога nginx

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

}