我在Apache 2.4中有以下VirtualHost
<VirtualHost example.com:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /dev/null
RewriteEngine on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301]
</VirtualHost>
我希望它能重定向
http://www.example.com/ -> https://www.example.com/
http://example.com/ -> https://www.example.com/
然而,它重定向
http://www.example.com/ -> https://www.example.com/
http://example.com/ -> https://example.com/
我没理解......它重定向到%{HTTP_HOST}。 %{SERVER_NAME}不应该是ServerName吗?这是预期的行为,还是我在其他地方有错误?此外,VirtualHost语句中的主机名有什么相关性?我还没有找到相关信息。感谢。
答案 0 :(得分:1)
好的,正如rewritecond和usecanonicalname所述 "Explore APIs"
UseCanonicalName On
解决问题(但还有其他含义)。除此之外,%{SERVER_NAME}实际上包含HTTP_HOST。 如果有人知道如何使用UseCanonicalName Off查询ServerName,请告诉我。