1

我们都知道我们可以在主题中包含自定义 JS/CSS portal_normal.vm

<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>

变量$javascript_folder$css_folder结果都变成了绝对 URL。 http://content.liferay.com/4.3/misc/theme-api-4.3.0.html

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

不仅使用这些速度变量添加的文件,而且其他一些与主题相关的文件 ( main.css, main.js) 也不会使用服务器绝对 URL 加载到浏览器中。

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

谢谢

4

2 回答 2

0

如果您使用 Apache 的 mod_proxy 并通过 http 转发,我建议您查看ProxyPreserveHost On指令。这会将实际使用的主机名转发给 tomcat(以及 Liferay)。

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

简而言之:除非另有配置(请参阅 pdolega 的回答)Liferay 将使用已向其发出请求的主机名。这是由Tomcat决定的。如果 tomcat 只获取到内部主机的代理请求,那就是它解析的内容。

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

于 2014-03-11T07:58:10.090 回答
0

一般来说,绝对 URL 在 Liferay 中是一个巨大的痛苦。你能负担得起在 portal-ext.properties 中指定的属性吗:

  • web.server.host
  • web.server.protocol
  • web.server.port

?

如果是这样,这可能会对您有所帮助 - 它应该使绝对路径尊重您的代理配置。认为这并不总是可能的 - 例如,当您需要通过代理和直接访问 LR 实例时(例如 Intranet 与 Extranet)。

于 2014-03-07T10:07:13.670 回答