我相信我在升级Drupal时遵循了说明(7.33 - > 7.39),但设法打破了它。
设置:Drupal站点位于反向代理后面:
<Location /app>
ProxyPass http://back.example.com/drupal
ProxyPassReverse http://back.example.com/drupal
ProxyPassReverseCookiePath /drupal /app
</Location>
在sites/default/settings.php
中,有这一点:
$conf['reverse_proxy_header'] = 'HTTP_X_FORWARDED_FOR';
if (!empty($_SERVER[$conf['reverse_proxy_header']])) {
$base_url = 'http://front.example.com/app';
}
问题:虽然某些表单似乎有效,但生成正确的action
属性(<form action="/app/..." ...>
),大多数(特别是管理区域中的所有内容)都忽略$base_url
,生成{ {1}},所以提交明显失败。
我查看了源代码,但我无法弄清楚它是如何工作的,因为据我所见,<form action="/drupal/..." ...>
是从action
生成的,从drupal_build_form
读取操作数据,该数据由element_info('form')
填充,然后调用system_element_info
- 而request_uri()
中没有关于request_uri()
的内容。
我试图用$base_url
清除缓存,以防万一我在数据库中遗漏了某些东西,但它没有帮助。
编辑:似乎大多数链接都在调用drush
函数,这是正确的。但是没有为表单的url($path)
属性调用它,除了从插件呈现的表单(并且似乎不使用action
,但调用element_info
到构建其url
)。
EDIT2:如果不清楚,action
具有正确的值;它只是没有被应用(我无法看到它将被应用到哪里)。
答案 0 :(得分:1)
问题确实存在于List aList = Collections.synchronizedList(new ArrayList());
调用system_element_info
而不是$ base_url ......
但是和drupal一样,你可以改变一切:
request_uri