web-dev-qa-db-ja.com

nginxサブディレクトリワイルドカードの書き換え

Nginxサーバーにサーバーブロックを設定しました。ドメインtestsite.com。個別のWordPressインストールをルートフォルダーの直接の子フォルダーにインストールできるようにしたい(例:/var/www/html/testsite.com /childfolder1) 、/ var/www/html/testsite.com /childfolder2など、テストサイトからアクセスできます.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;
}
2
physalis

あなたがしたいことがうまくいくかどうかは証明できませんが、以下は「疑似コード」を実際のnginx構成に変換したものです(同様にコピーと貼り付けのソリューションが機能していれば、これも機能し続けるはずです)。

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

これを試してください〜

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;
}

}

0
JohnsonGoey