1

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

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

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

我的虚拟主机是http://mysite.local匹配到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”节点,但它破坏了站点站点。

我注意到“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;
      }
    }
4

2 回答 2

1

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

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

hst:hst + hst:hosts + dev-localhost + local + mysite + hst:root

有关更多背景信息,请参阅主机配置文档。如果您在前面有一个像 apache 这样的 Web 服务器,请确保您将 proxypreserve 主机保持打开状态,以便 HST 可以检测到该主机。有关更多信息,请参阅Apache 网络服务器配置文档

于 2015-04-13T09:03:14.273 回答
0

传递主机名解决问题!感谢杰伦的评论。
不过,无需更新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;
      }
    }
于 2015-04-15T03:28:41.123 回答