【发布时间】:2022-08-03 03:48:45
【问题描述】:
我想从非www重定向到www。
我想做的事:
在浏览器中输入:
获得:
我写的:
version: \"3.9\"
services:
traefik:
build: ./traefik
image: image-traefik-eb:v.1.0
container_name: container-traefik-eb
command:
- --log.level=INFO
- --log.filePath=/data-log/traefik.log
- --log.format=json
- --accesslog=true
- --api.insecure
- --api.dashboard
- --providers.docker
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.web.http.redirections.entryPoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
- --entrypoints.websecure.address=:443
- --entrypoints.websecure.http.tls=true
- --entrypoints.websecure.http.tls.certresolver=leresolver
- --certificatesresolvers.leresolver.acme.tlsChallenge=true
- --certificatesresolvers.leresolver.acme.email=#########@gmail.com
- --certificatesresolvers.leresolver.acme.storage=/letsencrypt/acme.json
- --entrypoints.websecure.http.middlewares.redirect-non-www-to-www.redirectregex.permanent=true
- --entrypoints.websecure.http.middlewares.redirect-non-www-to-www.redirectregex.regex=\"^https?://(?:www\\\\.)?(.+)\"
- --entrypoints.websecure.http.middlewares.redirect-non-www-to-www.redirectregex.replacement=\"https://www.${1}\"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./volumes/data-letsencrypt/:/letsencrypt
- ./volumes/data-log/:/data-log/
restart: always
ports:
- 80:80
- 443:443
networks:
- eb
- traefik-network
php:
build: ./php-apache
image: image-php-apache-eb:v.1.0
labels:
traefik.enable: \'true\'
traefik.http.services.php.loadbalancer.server.port: 80
traefik.http.services.php.loadbalancer.server.scheme: http
traefik.http.routers.php.rule: Host(`www.#########.ml`,`#########.ml`)
traefik.http.routers.php.middlewares: redirect-non-www-to-www
volumes:
- ./volumes/data-php:/var/www/html
restart: always
depends_on:
- traefik
networks:
- eb
networks:
eb:
internal: true
traefik-network:
Dockerfile
FROM php:8.1-apache
EXPOSE 80
Dockerfile
FROM traefik:v2.8.0
我从中获得代码的来源:
https://medium.com/geekculture/how-to-redirect-from-non-www-to-www-with-traefik-659cb7197449
我得到什么:
ERROR: Invalid interpolation format for \"command\" option in service \"traefik\": \"--entrypoints.websecure.http.middlewares.redirect-non-www-to-www.redirectregex.replacement=\"https://www.${1}\"\"
ubuntu-22-04-lts@webserver:~/www.domainname.com$
-
在 PHP 服务中,您有“traefik.http.routers.training2.middlewares: redirect-non-www-to-www@ file\”。帖子中的那个@文件在那里,因为他的 traefik\ 的重定向配置是静态文件的一部分。所以你肯定需要在那里删除@文件。尝试在没有@文件的情况下使用它,看看结果如何。
-
标签: traefik.enable: \'true\' traefik.http.routers.training.rule: Host(
www.***.ml) traefik.http.routers.training.middlewares: redirect-non-www-to-www -
*** 需要重新启动系统 *** 上次登录:2022 年 7 月 25 日星期一 18:41:13 来自°°°°° ubuntu-22-04-lts@webserver:~$ cd /home/ubuntu-22-04-lts /www.***.ml docker-compose up -d --force-recreate 错误:服务 \"traefik\" 中 \"command\" 选项的插值格式无效:\"--entrypoints.websecure.http.middlewares .redirect-non-www-to-www.redirectregex.replacement=\"${1}\"\" ubuntu-22-04-lts@webserver:~/www.***.ml$
-
我也试过这段代码:
-
标签: traefik.enable: \'true\' traefik.http.routers.training.rule: Host(
www.########.ml,########.ml) traefik.http.middlewares.test-redirectregex.redirectregex.regex: ^http:// ########.ml/(.*) traefik.http.middlewares.test-redirectregex.redirectregex.replacement:########.ml/$${1}