我们都知道我们可以在主题portal_normal.vm
中包含自定义JS / CSS:
<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
都会产生绝对网址。
http://content.liferay.com/4.3/misc/theme-api-4.3.0.html
在我的情况下,liferay在代理服务器后面运行,因此,这些绝对URL导致我遇到麻烦,js / css文件没有被加载到浏览器中。
不仅使用这些速度变量添加的文件,而且其他一些与主题相关的文件(main.css
,main.js
)也不会加载到带有服务器绝对URL的浏览器中。
有没有办法强制主题使用相对URL而不是绝对?
由于
答案 0 :(得分:0)
绝对URL一般都是Liferay的巨大痛苦。您能否在portal-ext.properties中指定属性:
如果是这样可能会对您有所帮助 - 它应该使绝对路径尊重您的代理配置。认为并非总是可行 - 例如,当您需要通过代理和直接访问LR实例时(例如,考虑内联网与外联网)。
答案 1 :(得分:0)
如果您正在使用Apache的mod_proxy并通过http转发,我建议您查看ProxyPreserveHost On
指令。这会将实际使用的主机名转发给tomcat(因此,Liferay)。
另一个选择是使用mod_jk或mod_proxy_ajp - 它们通过ajp协议转发流量,该协议会自动执行此操作。
简而言之:除非另有配置(请参阅pdolega的回答)Liferay将使用已发出请求的主机名。这是由Tomcat决定的。如果tomcat只获取内部主机的代理请求,那就是它解析的内容。
但有一点需要注意的是,有时候没有请求(例如在后台任务,电子邮件等),并且可能值得在两端使用相同的主机名:想想留言板帖子的电子邮件通知:如果这样转到内联网和互联网用户,你希望这些主机名是同时发送给两种用户的链接。