Apache强制http跳转https

1、介绍
一般来说,apache2配置好http和https后,如果想要做http强转到https,
需要设置url重定向规则,大致需要下面几个步骤即可完成配置。

2、安装Apache2
sudo apt-get install apache2
– 默认站点在 /var/www/
– 配置文件在 /etc/apache2/
– 日志在 /var/log/apache/
– 启动脚本是 /etc/init.d/apache2

3、etc/apache2下的文件夹与文件
apache2.conf:Apache的主要配置文件,包含全局配置。
envvars:Apache2环境变量设置。
ports.conf:配置Apache监听的端口。
mods-available:这个目录包含模块和模块配置文件,不是所有的模块都有配置文件。
mods-enabled:持有/etc/apache2/mods-available目录下文件的链接,当该目录下有一个模块文件和其配置文件,那么Apache重启后该模块将生效。
sites-available:这个目录包含Apache虚拟主机的配置文件。虚拟主机允许Apache配置多个站点并为每个站点配置不同的参数。后面下面配置的时候会配置80端口的http重定向为443的https。
sites-enabled:持有/etc/apache2/sites-available目录下文件的链接。当Apache重启后,该目录中包含的站点将会被激活。


4、ssl配置
安装openssl
sudo apt-get install openssl

5、开启ssl模块
sudo a2enmod ssl
无效则输入下面两个命令
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf

6、进入/etc/apache2/ports.conf
查看是否有80  和443端口,没有就添加上去


7、在项目根目录下/var/www,创建文件".htaccess",内容如下
RewriteEngine on
RewriteBase / 
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

或者****

/etc/apache2/sites-available/000-default.conf ,
打开 /etc/apache2/sites-available/000-default.conf ,
在 <\VirtualHost *:80><\VirtualHost> 标签内随便一个地方加入以下三行
RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R=301]

8、修改apache统一配置文件里面的"",方法如下:
cd /etc/apache2/
sudo vi apache2.conf
 
# 找到<Directory />那一段,修改一下AllowOverride从None到All
<Directory />
        Options FollowSymLinks
        AllowOverride All
        Require all denied
</Directory>
 
# 找到<Directory /var/www/>那一段,修改一下AllowOverride从None到All
<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>


9、配置ssl虚拟站点
如果不想用软链接,可以从sites-available中复制default-ssl.conf到sites-enabled(表示启用的配置),然后修改default-ssl.conf
SSLCertificateFile  证书地址/2_xxx.crt
SSLCertificateKeyFile 证书地址/3_xxx.key
SSLCertificateChainFile 证书地址/1_root_bundle.crt

10、启动重定向
sudo a2enmod rewrite 
或者
sudo ln -s /etc/apache2/mods-available/rewrite.load  /etc/apache2/mods-enabled/rewrite.load

11、重启apache服务
sudo service apache2 restart


12、本地hosts文件配置   
#配置如下:172.16.0.235  xinda.pactera.com


13、访问: http://xinda.pactera.com/ 自动跳转 https://xinda.pactera.com/


/*************************************************************************************
* 扩展1、在你的网站根目录下面添加该文件".htaccess"目录访问控制文件,并添加如下内容:
* RewriteEngine On
* RewriteCond %{SERVER_PORT} 80
* RewriteRule ^(.*)$ https://www.orbpi.cn/$1 [R,L]
* #或者
* RewriteEngine On 
* RewriteCond %{SERVER_PORT} 80 
* RewriteRule ^(.*)$ https://www.orbpi.cn/$1 [R=301,L]
* #又或者
*RewriteEngine on
* RewriteBase /
* RewriteCond %{SERVER_PORT} !^443$
* RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
* #注意:如果是在子目录,可以用
* RewriteEngine On
* RewriteCond %{SERVER_PORT} 80
* RewriteCond %{REQUEST_URI} subfolder
* RewriteRule ^(.*)$ https://www.orbpi.cn/subfolder [R,L]

* 扩展2、上面是对所有的url都转换成https,如果针对某一个url转成https应该进行如下操作
* 只要求访问http://bo.kevin.com/beijing/ 时强制跳转到https://bo.kevin.com/beijing/,其他的url访问时都不做http到https的强转!
* 在.htaccess文件中添加下面内容:
* [root@docker-test2 web]# cat .htaccess
* <IfModule mod_rewrite.c>
* RewriteEngine on
* RewriteBase /
* RewriteCond %{SERVER_PORT} 80
* RewriteCond %{HTTP_HOST} ^bo.kevin.com/beijing/ [NC]
* RewriteRule ^(.*)$ https://bo.kevin.com/beijing/ [R,L]
* </IfModule>
* 上面的配置,就实现了只是针对http://bo.kevin.com/beijing/这一个单独的url做https的强制跳转,其他url访问时都不做跳转!

* 扩展3、相关命令
* 查看Apache的运行版本:apachectl -v
*/*******************************************************************************************************


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值