想这个标题把头都想破了,涵盖内容太多,简明扼要都写了那么长。 之前租用了一台阿里云的服务器,安装了 LAMP 分别给多个人做多个网站,同时需要满足几个功能:

1,分别用不同的域名访问服务器的 80/443 端口。

2,域名都要从不带 www 的域名自动跳转到带 www 的域名,方便 SEO。

3,域名都要自动从 http 跳转到 https,也就是使用证书的 443 端口。

网上搜了一堆资料,都只能单一实现上述一个功能,没有一个能教人同时实现这三个功能的。 于是写下这篇,希望对大家有所帮助。 环境 Centos7.2 。

##一,打开 Apache 虚拟主机配置

注意,每次修改 httpd.conf 都需要重启 Apache 服务,否则修改不会生效。 重启命令:

1
service httpd restart

首先用 vi 打开 httpd.conf

1
vi /etc/httpd/conf/httpd.conf

查找

IncludeOptional conf.d/*.conf

是否存在,如果没有则添加,如果有则把前面的 # 号去掉。

##二,配置 httpd.conf 文件

1,配置网站目录位置与权限

找到

1
2
3
4
<Directory "/var/www/html">
AllowOverride None
Require all granted
</Directory>

/var/www/html改成你的网站目录,这里可以设置多个目录,目录与目录之间可以是上下级关系。 比如我的目录设置:

1
2
3
4
<Directory "/home/web">
AllowOverride none
Require all granted
</Directory>

这里为了让思路更清晰,我只设置了一个目录 /home/web 。后面我们会在这个目录下建立多个文件夹分别放置不同的网站。 相关配置请参考这里: https://www.80note.com/2019/01/451.html 如果你不知道 .htaccess 具体怎么用,那就填 none 好了,在这里我用的是 none。 Require 指令用来控制允许或者拒绝访问来源。

Require all granted #为允许所有来源访问
Require all denied #为拒绝所有来源访问

我这里设置的是允许所有来源访问,Require 还有很多用法,这里就不展开了,想了解的可以去这里看看 https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require

2,配置虚拟主机端口与目录

查找

NameVirtualHost *:80

是否存在,如果没有则添加,如果有则把前面的 # 号去掉。后面都是这样操作,不再重复。 这里的 80 是指 http 默认端口号,可根据需要修改,但正常情况一般不修改。 设置虚拟主机目录

1
2
3
4
<VirtualHost *:80> 
DocumentRoot /home/web/80note
ServerName 80note.com
</VirtualHost>

其中 80 指该目录对应端口。

/home/web/80note 是对应目录位置,可根据需要修改。

80note.com 是该目录对应域名。

新增一个目录对应另一个域名:

1
2
3
4
5
6
7
8
<VirtualHost *:80>
DocumentRoot /home/web/80note
ServerName 80note.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/web/zuihuimai
ServerName zuihuimai.net
</VirtualHost>

就是这么简单。

注意: 如果用域名访问,端口可以设置成一样的。 如果是通过 IP 访问,端口需要设置成不一样的。 域名需要从无 www 跳转 www ,请继续往下看。

3,从不带 www 的域名跳转到 www 域名

修改刚才的配置内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost :80>
DocumentRoot /home/web/80note
ServerName 80note.com
RewriteEngine on
RewriteCond %{HTTP_host} ^80note.com [NC]
RewriteRule ^(.) http://www.80note.com1 \[L,R=301\]
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/web/zuihuimai
ServerName zuihuimai.net
RewriteEngine on
RewriteCond %{HTTP_host} ^zuihuimai.net \[NC\]
RewriteRule ^(.*) http://www.zuihuimai.net1 [L,R=301]
</VirtualHost>

这里会把所有的 80note.com 地址重定向到 www.80note.com 同时也会把所有的 zuihuimai.net 地址重定向到 www.zuihuimai.net 根据自己需要修改域名就好。

4,从 http 自动跳转到 https

注意:这里请提前配置好 https 的 ssl 证书,否则会造成网站无法访问。 配置方法参考这里 https://www.80note.com/2019/01/480.html 根据刚才的配置,新增 https 跳转重定向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<VirtualHost :80>
DocumentRoot /home/web/80note
ServerName 80note.com
RewriteEngine on
RewriteCond %{HTTP_host} ^80note.com [NC]
RewriteRule ^(.) http://www.80note.com1 \[L,R=301\]
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/web/80note
ServerName www.80note.com
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}1 [L,R]
</VirtualHost>
<VirtualHost :80>
DocumentRoot /home/web/zuihuimai
ServerName zuihuimai.net
RewriteEngine on
RewriteCond %{HTTP_host} ^zuihuimai.net [NC]
RewriteRule ^(.) http://www.zuihuimai.net1 \[L,R=301\]
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/web/zuihuimai
ServerName www.zuihuimai.net
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}1 [L,R]
</VirtualHost>

新增内容会将之前的地址转为含有 www 的地址,再次重定向到 https 地址。 修改完毕后按 ESC 键,用

:x 或者 :wq

保存文件。 重启 apache

1
service httpd restart

新配置生效。

原文链接:https://www.80note.com/2019/01/395.html

转载请注明出处。