使用 .htaccess 的 apache 虚拟主机站点无法正常工作

apache virtualhost site using .htaccess not working

我 运行 brew/apache 在本地 machine(mac-os 蒙特雷)。

我要配置虚拟hosts.

对其中​​一个虚拟 host (panierssaison.local) 的查找不起作用,在延迟几秒后以找不到服务器错误结束。

Apache 设置为侦听端口 8080,httpd.conf

中允许使用虚拟 hosts

这是 httpd-vhosts.conf 中有问题的 host 的配置:

<VirtualHost *:8080>
    ServerAdmin eniac314@panierssaison.local
    DocumentRoot "/Users/eniac314/Sites/paniersSaison"
    ServerName panierssaison.local
    ServerAlias www.panierssaison.local
    ErrorLog "/opt/homebrew/var/log/httpd/panierssaison.local-error_log"
    CustomLog "/opt/homebrew/var/log/httpd/panierssaison.local-access_log" common

    <Directory "/Users/eniac314/Sites/paniersSaison">
        Options Indexes FollowSymLinks Multiviews
        MultiviewsMatch Any
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost> 

我像这样在hosts.conf中添加了虚拟hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost panierssaison.local laterreduchat.local murol.local
255.255.255.255 broadcasthost
::1             localhost

未加载的网站使用了 /Users/eniac314/Sites/paniersSaison 中的 .htaccess 文件,删除它后网站可以加载。

.htaccess相关规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteBase /

[..]

当 运行 httpd -S 所有虚拟 hosts 都被正确检测到时。

所以似乎在 hosts.conf 中添加带有 www 前缀的服务器别名解决了问题。

这是我的 hosts.conf 现在:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost panierssaison.local laterreduchat.local murol.local www.panierssaison.local www.laterreduchat.local www.murol.local
255.255.255.255 broadcasthost
::1             localhost

我认为 .htaccess 中有这条规则

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

正在将 www 前缀附加到 url,以防止 dns 匹配。