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;
}
}
按照说明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;
}
}