Apache proxypass结尾斜杠/目录问题

我有一个遗留网站,用于运行Apache 2运行proxypass后面的一个旧的Apache 1.3实例的慈善机构。 当请求到达example.com时,Apache 2将其内部发送到localhost:8080,它可以正常工作。

问题:

example.com/blog/ works but example.com/blog (没有结尾的斜杠)没有。 它在Chrome中更改的url是example.com:8080/blog/ ,它不存在。

所有其他目录也是如此。

Apache 2:

<VirtualHost *:80> ServerName example.com ProxyPreserveHost On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost> 

Apache 1:

 NameVirtualHost *:8080 <VirtualHost *:8080> DocumentRoot /usr/www/html/ ServerName example.com RewriteEngine on RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD)$ RewriteRule .* - [F] </VirtualHost> 

我认为一个简单的解决scheme是在虚拟主机中添加一个重写程序,但是尽pipe尝试了很多,我仍然没有取得任何成功。 我认为一个关键的问题是在斜杠不在那里的时候,错误地看example.com:8080。 如果有人能帮助我,这将是非常好的,请问我会有用的其他信息。

在configuration中我看不到ProxyPassReversemod_proxy_html指令; 缺乏ProxyPassReverse ,特别是,可能是你的问题的原因,因为后端Apache发送redirect到slashful的URL,但它的内部名称的位置:头,没有ProxyPassReverse的前端Apache只是让这个内部URL泄漏。

mod_proxy_html是针对等效的问题,但在HTML而不是HTTP头。 这也值得使用,除非你真的确定没有人会把一个完整的URL在HTML中(对于任何dynamic的Web应用程序,这是一个不好的select)。