Конфигурация Caddy для многоязычного Wordpress

Я пытаюсь настроить веб-сайт Wordpress с помощью multisite:

  • example.com

  • example.com/fr

С помощью следующего файла Caddyfile:

example.com:80 {
    redir https://www.example.com{uri}
}

www.example.com:80 {
    root /app/public
    gzip

    fastcgi / 127.0.0.1:9000 {
        ext .php
        split .php
        index index.php
    }

    rewrite {
        regexp ^/[_0-9a-zA-Z-]+(/wp-.*)
        to {path} {path}/ {1}
    }

    rewrite {
        regexp ^/[_0-9a-zA-Z-]+(/.*\.php)$
        to {path} {path}/ {1}
    }

    rewrite {
        if {path} not_match ^\/wp-admin
        to {path} {path}/ /index.php?_url={uri}
    }

    log stdout
    startup /usr/sbin/php-fpm7.0 -F -O &
}

Когда я достигаю /fr/wp-admin/, я получаю от 301 до /wp-admin/.

Кто-нибудь знает, как это исправить?

Ответ 1

Это то, что вы указали:

rewrite {
    regexp ^/[_0-9a-zA-Z-]+(/wp-.*)
    to {path} {path}/ {1}
}

Что в вашем случае, с запросом /fr/wp-admin/ попытается выполнить:

  • {path}= /fr/wp-admin/

  • {path}/= /fr/wp-admin/

  • {1}= /wp-admin/, который является первым блоком, захваченным в вашей скобке

Значение Caddy не находит администратора под /fr или не перенаправляется после этого, в зависимости от того, на что вы нацелитесь.

Ответ 2

Эта конфигурация caddy работает для меня. Надеюсь, это поможет.

rewrite {
    regexp ^(/[^/]+)?(/wp-.*)
    to {2}
}

rewrite {
    regexp ^(/[^/]+)?(/.*\.php)
    to {2}
}

rewrite {
    if {path} not_match ^\/wp-admin
    to {path} {path}/ /index.php?{query}
}