Liferay主题中JS和CSS的绝对URL在代理后会导致问题

Liferay主题中JS和CSS的绝对URL在代理后会导致问题,liferay,liferay-theme,Liferay,Liferay Theme,我们都知道,我们可以在主题门户_normal.vm中包含自定义JS/CSS,如下所示: 变量$javascript\u folder和$css\u folder都会生成一个绝对URL。 http://content.liferay.com/4.3/misc/theme-api-4.3.0.html 在我的情况下,liferay在代理服务器后面运行,因此,这些绝对URL给我带来了麻烦,并且浏览器中没有加载js/css文件 不仅是使用这些velocity变量添加的文件,还有一些其他与主题相关的文件m

我们都知道,我们可以在主题门户_normal.vm中包含自定义JS/CSS,如下所示:

变量$javascript\u folder和$css\u folder都会生成一个绝对URL。 http://content.liferay.com/4.3/misc/theme-api-4.3.0.html

在我的情况下,liferay在代理服务器后面运行,因此,这些绝对URL给我带来了麻烦,并且浏览器中没有加载js/css文件

不仅是使用这些velocity变量添加的文件,还有一些其他与主题相关的文件main.css、main.js也不会使用服务器绝对URL加载到浏览器中

有没有办法强制主题使用相对URL而不是绝对URL


谢谢

绝对URL在Liferay中通常是巨大的痛苦。您是否可以在portal-ext.properties中指定属性:

web.server.host web.server.protocol web.server.port ?


如果是这样,这可能会帮助您-它应该使绝对路径尊重您的代理配置。认为这并不总是可能的-例如,当您需要通过代理和直接访问LR实例时,请考虑内联网与外联网。

如果您使用Apache的mod_代理并通过http转发,我建议您查看ProxyPreserveHost On指令。这会将实际使用的主机名转发给tomcat,从而转发给Liferay

另一种选择是使用mod_jk或mod_proxy_ajp-它们通过ajp协议转发流量,ajp协议会自动执行此操作

简而言之:除非另有配置,否则请参阅pdolega的答案Liferay将使用已向其发出请求的主机名。这是由Tomcat决定的。如果tomcat只获得对内部主机的代理请求,那么它就会解决这个问题


但需要注意的是,有时没有请求,例如在后台任务、电子邮件等中,可能值得在两端使用相同的主机名:想想留言板帖子的电子邮件通知:如果这发送到内部网和internet用户,您希望在同时发送给这两种用户的链接中包含哪个主机名。

您看到的URL是什么?e、 您是否看到内部服务器名称或本地主机?这可能是您的代理或liferay设置的配置错误,但需要更多的信息来判断。URL不存在问题qualify@OlafKock Hi Olaf,我可以在页面源代码中看到内部服务器绝对URL。谢谢你的建议,不过它解决了故事的一部分。正如您所说,指定web服务器详细信息使得每次都可以通过代理访问LR实例,通过web服务器路由所有流量,即使我们直接访问内部服务器Intranet也是如此。需要一些可以为内联网和互联网用户设置LR实例的东西。我不是100%确定,但我认为这实际上是不可能的。看看这些问题:尤其是这一个为什么它有次要的优先权是我无法理解的。。。
<script type="text/javascript" src="$javascript_folder/custom.js" charset="utf-8"></script>
<link type="text/css" rel="stylesheet" src="$css_folder/your_custom.css"></link>