hst.actionUrl虚拟配置Hippo CMS

hst.actionUrl virtual configuration Hippo CMS

按照说明here,我的网站可以正常显示内容。 然而,处理表单提交是当前的一个问题。

我在我的环境中设置了虚拟主机。内容呈现正常,但表单提交最终出现空白页。

我的表格在 http://mysite.local/contact

我的虚拟主机是http://mysite.local matches to http://localhost:8080/site

我的表单遵循开发人员的踪迹:

<@hst.actionURL var="actionUrl"/>
<form id="" class="form" action="${actionUrl}" method="post">

当我点击提交时,我被重定向到一个空白页面:http://localhost:8080/contact?r14_r1_r1:u_u_i_d=5641b2fe-10ad-41b2-8f30-06d8a59ff451

使用我的自定义组件,我打印出了 serverName,它是 "localhost"!

如何在控制台中配置它,以便我的服务器是 "mysite.local" 而不是 "localhost"?

@Override
public void doBeforeRender(final HstRequest request,
final HstResponse response)
throws HstComponentException {
super.doBeforeRender(request, response);

l.info(request.getServerName());

}

更新: 我已经按照 Joeren 的建议添加了节点。

但是还是不行。 我删除了原先位于 hst:hosts >> dev-localhost 下的 "localhost" 节点,但它破坏了 Site 站点。

我注意到 "hst:hosts" 已将 hst:defaulthostname 设置为 "localhost"。 我不敢做出改变,因为我认为这是不可逆转的。

更新:

我的虚拟主机配置(nginx)如下:

server {
      # listen 80;
      server_name mysite.local;

      location /site/ {
        proxy_pass   http://localhost:8080/site/;
        # include /etc/nginx/proxy_params;
      }

      location /cms/ {
        proxy_pass   http://localhost:8080/cms/;
        # include /etc/nginx/proxy_params;
      }

      location / {
        proxy_pass   http://localhost:8080/site/;
        # include /etc/nginx/proxy_params;
      }
    }

要重定向到完全限定域名,您需要在 CMS JCR 控制台的 HST 配置树中设置虚拟主机。

如果 mysite.local 是您本地计算机上的一个域,您可以将它放在 dev-localhost 主机组中。通过创建以下节点:

hst:hst + hst:hosts + 开发本地主机 + 本地 + 我的网站 + hst:root

有关更多背景信息,请参阅 hosts configuration documentation。 如果你前面有一个像 apache 这样的 web 服务器,请确保将 proxypreserve 主机保持打开状态,以便 HST 可以检测到该主机。有关详细信息,请参阅 Apache webserver configuration documentation

通过主机名解决问题!感谢 Jeroen 的评论。
不过,无需在控制台中更新 hst:hosts 配置。

我已经将我的 nginx 配置更新为如下:

server {
      # listen 80;
      server_name mysite.local;

      location /site/ {
        proxy_pass   http://localhost:8080/site/;
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;
      }

      location /cms/ {
        proxy_pass   http://localhost:8080/cms/;
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;
      }

      location / {
        proxy_pass   http://localhost:8080/site/;
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;
      }
    }