You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wagtail多站点配置下保留相对URL的方法与根源咨询

问题解答

行为根源

当Wagtail实例存在多个Site时,Page Chooser默认输出完全限定URL的核心原因是:系统无法默认判定选中的页面是否属于当前访问的站点。为了避免跨站点场景下相对路径导致的跳转错误,Wagtail会自动生成包含域名的全URL,确保链接指向正确的目标站点页面。

恢复相对路径的方法

你可以通过以下几种方式在多站点配置下恢复相对路径输出:

1. 模板层面使用relative_url方法

在模板渲染链接时,不要直接调用page.url,而是使用page.relative_url(request.site)。这个方法会自动判断目标页面的站点与当前请求站点是否一致:

  • 若站点一致,返回相对路径
  • 若站点不一致,返回完全限定URL(保证跨站点跳转正确性)

示例模板代码:

<a href="{{ page.relative_url(request.site) }}">{{ page.title }}</a>

2. 自定义页面字段的URL输出逻辑

如果需要在模型层面控制URL输出,可以重写Page模型的get_url方法(注意:全局重写需谨慎,避免影响其他功能):

from wagtail.models import Page

class CustomPage(Page):
    def get_url(self, request=None):
        if request and self.get_site() == request.site:
            return self.relative_url(request.site)
        return super().get_url(request)

3. 子路径式多站点的配置调整(局限性场景)

如果你的多站点基于同一域名的子路径搭建,可将主站点设置为is_default_site=True,同时让其他站点的root_page作为主站点的子页面。这种场景下,Page Chooser会默认输出相对路径,但仅适用于子路径架构的多站点。


内容的提问来源于stack exchange,提问作者Rich - enzedonline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 13:42:34