我在专用服务器上设置了 apache 和 varnish,它在 debian squeeze 上运行。
有时 varnish 会重定向到 apache 后端端口 8000。在这种情况下,浏览器会显示 mydomain.com:8000/shop/,但无法连接到服务器,因此不会显示任何内容。我猜问题是由我的 apache 或 varnish 配置引起的,这两个配置都非常基础。
varnish 在 80 端口上运行 apache 在 8000 端口上运行
这里有一些例子:
mydomain.com/shop/ -> mydomain.com/shop/ (有效!商店显示正确)
mydomain.com/shop -> mydomain.com:8000/shop/ (未连接到服务器;没有内容)
mydomain.com/phpinfo.php -> mydomain.com/phpinfo.php (有效!)
我使用的商店是 shopware。我曾考虑编辑 den shop 目录中的 .htaccess,但没用。所以我使用的是标准 shopware .htaccess。
如果有帮助的话,我可以发布我的配置文件(varnish/apache)或我的服务器的正确 url。
我将非常感激任何建议。我没什么主意了。
提前感谢!Michael
答案1
这是 Apache 的问题。Apache 尝试规范化 Url。
网址“http://example.com/foo“不同于”http://example.com/foo/“(带斜杠)。但大多数时候需要的是相同的资源。
Apache 尝试重写没有尾随斜杠的 URL,因此它们指向带有尾随斜杠的 URL。
现在的问题是您的服务器在端口 8000 上运行,所以 apache 也添加了这个端口。
从我的角度来看有两种选择:
- 在端口 80 上运行 Apache
- 在您的 apache conf 中设置“UseCanonicalName Off”并构建自己的重写以将没有尾随斜杠的 URL 指向正确的点。