【发布时间】:2021-12-05 14:41:35
【问题描述】:
所以这是我的conf:
<VirtualHost *:80>
<Directory /var/www/html/webserver/public>
Allow From All
AllowOverride All
Options -Indexes
</Directory>
DocumentRoot /var/www/html/webserver/public
ServerName ./install.sh
</VirtualHost>
<VirtualHost *:80>
<Directory /var/www/html/webserver/public>
Allow From All
AllowOverride All
Options -Indexes
</Directory>
DocumentRoot /var/www/html/webserver/public
ServerName test.com
ServerAlias www.test.com
Redirect permanent / https://test.com/
RewriteEngine on
#RewriteBase /
RewriteCond %{SERVER_NAME} =www.test.com [OR]
RewriteCond %{SERVER_NAME} =test.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
<Directory /var/www/html/webserver/public>
Allow From All
AllowOverride All
Options -Indexes
</Directory>
DocumentRoot /var/www/html/webserver/public
ServerName test.com
ServerAlias www.test.com
SSLCertificateFile /etc/letsencrypt/live/test.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
这非常适用于 http -> https 重定向。例如 test.com 或 http://test.com 重定向到 https://test.com。 www.test.com 不起作用(我不知道为什么?),我会得到一个 404 页面。下一件大事,假设我的网络服务器的 ip 是 12.23.45.67 - 我必须如何更改我的配置文件,所以这个 ip 也重定向到https://test.com?
基于@Don't Panic 帖子的新 .conf 文件:
<VirtualHost *:80>
<Directory /var/www/html/webserver/public>
Allow From All
AllowOverride All
Options -Indexes
</Directory>
DocumentRoot /var/www/html/webserver/public
ServerName test.com
ServerAlias www.test.com
RewriteEngine on
#RewriteBase /
RewriteCond %{SERVER_NAME} =www.test.com [OR]
RewriteCond %{SERVER_NAME} =test.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
ServerName XX.XX.XX.XX
ServerAlias www.test.com
DocumentRoot /var/www/html/webserver/public
RewriteEngine on
RewriteCond %{SERVER_NAME} =test.com [OR]
RewriteCond %{SERVER_NAME} =www.test.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
【问题讨论】:
-
这里似乎有些复制粘贴错误? 1)没有https配置。 2)
ServerName ./install.sh无效,我认为; 3)ServerAlias www.test.com和ServerName一模一样就没有意义? -
@Don'tPanic 谢谢!是的,应该是
ServerName test.com和ServerAlias www.test.com。尽管如此,问题仍然存在。我用 https (ssl) 配置更新了我的第一篇文章。 -
1) 第一个虚拟主机块(我昨天指出的无效
ServerName)应该被删除,AFAICT。 2) http vhost 末尾的RewriteCond内容已经与Redirect permanent行所做的相同——不要同时包含它们,删除Redirect permanent。 3) 修复ServerAlias后,您是否重新启动了 Apache,并清除了浏览器缓存? “www.test.com 不起作用” - http 还是 https? -
关于单独的重定向 IP 问题 - SO 上有很多重复项(例如 stackoverflow.com/a/67920979)。但是如果 Apache 没有收到带有请求的主机名(例如对 IP 的请求),它将匹配它找到的第一个虚拟主机。如果那是你上面的 http vhost,它已经重定向了,没什么可做的。