Traefik Stripprefix中间件失效:phpMyAdmin双路径访问问题求助
解决Traefik搭配phpMyAdmin路径访问异常问题
你的问题核心是访问不带尾斜杠的/phpmyadmin时,phpMyAdmin生成的资源路径错误,导致大量404。结合现有配置,推荐两种直接有效的解决方式:
方法一:添加重定向中间件统一访问路径
给Traefik新增一个重定向中间件,强制把不带尾斜杠的请求永久跳转至带斜杠的版本,确保phpMyAdmin始终在正确的路径上下文下运行。
修改后的完整Traefik配置如下:
# 定义重定向中间件,匹配不带斜杠的/phpmyadmin - "traefik.http.middlewares.phpmyadmin-redirect.redirectregex.regex=^https?://example.ir/phpmyadmin$" - "traefik.http.middlewares.phpmyadmin-redirect.redirectregex.replacement=https://example.ir/phpmyadmin/" - "traefik.http.middlewares.phpmyadmin-redirect.redirectregex.permanent=true" # 原有的路径剥离中间件 - "traefik.http.middlewares.phpmyadmin-path.stripprefix.prefixes=/phpmyadmin" # 路由器规则,先执行重定向再处理路径剥离 - "traefik.http.routers.phpmyadmin.rule=Host(`example.ir`) && PathPrefix(`/phpmyadmin`)" - "traefik.http.routers.phpmyadmin.middlewares=phpmyadmin-redirect,phpmyadmin-path"
方法二:配合调整phpMyAdmin的绝对URI配置
把PMA_ABSOLUTE_URI的值改成带尾斜杠的形式:
PMA_ABSOLUTE_URI: https://example.ir/phpmyadmin/
再结合方法一的重定向中间件,能确保phpMyAdmin始终以带斜杠的路径生成资源链接,彻底避免相对路径解析错误。
问题根源说明
当访问/phpmyadmin(不带斜杠)时,尽管Traefik的stripprefix会把路径剥离为/,但phpMyAdmin页面内的相对资源路径(比如css/style.css)会被浏览器解析为https://example.ir/css/style.css,而非正确的https://example.ir/phpmyadmin/css/style.css,这直接导致了404。而带斜杠的路径下,相对路径会被正确解析为https://example.ir/phpmyadmin/css/style.css,所以能正常加载资源。
内容的提问来源于stack exchange,提问作者haj_baba
相关产品推荐
相关产品推荐

