http需重定向到https时apache的rewrite模块配置和安装

简介:

转载请指明出处:http://hi.baidu.com/scutcslk/blog/item/4959c5af55ad38ce7cd92a86.html

步骤:
1、Apache安装rewrite模块的时候需要DBM支持,否则无法编译,所以首先要安装一个GDBM  
       下载地址:ftp://ftp.gnu.org/gnu/gdbm/
       安装步骤: 
           进入安装目录,
           ./configure
           make
           make install
           make install-compat       (最后行也要执行。否则无法编译出ndbm.h头文件)
       如果您不能确定服务器上是否已经装有DBM,那么可以安装一下。否则这步可以跳过。

2、现在到apache源码目录的标准模块目录中(/root/apache_src/src/modules/standard/)中,使用如下指令编译出so文件:
       /usr/local/apache/bin/apxs -c mod_rewrite.c -lgdbm
即可得到mod_rewrite.so文件。
       备注:"-lgdbm"是用为说明在编译mod_rewrite.c时要把gdbm链接进来。这样在第6步启动apache时就不会报出"dbm fetch"的错误了。

3、执行apache/bin目录下的apxs如下:
       /usr/local/apache/bin/apxs -i -A -n rewrite /root/apache_1.3.34/src/modules/standard/mod_rewrite.so

       作用:向http.conf配置文件中加入LoadModule语句,并自动将mod_rewrite.so文件拷贝到apache/libexec目录
       备注:命令中的rewrite参数是告诉apxs命令mod_rewrite.so文件中的模块名。在命令执行后,apxs会在LoadModule中为 rewrite加上"_module"以标名模块名称。如果你在启动apache时发现总是给出“不能定位API”之类的错误,那就是说明 LoadModule后面的模块名的语法要根据您的apache版本加以改变。

4、修改/usr/local/apache/conf/httpd.conf,在最后加入
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/help/(.*)$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]

含义是这样的:为了让用户访问传统的http://转到https://上来,用了一下rewrite规则:
第一句:启动rewrite引擎
第二句:rewrite的条件是访问的服务器端口不是443端口
第三句:这是正则表达式,^是开头,$是结束,/?表示有没有/都可以(0或1个),(.*)是任何数量的任意字符
整句的意思是讲:启动rewrite模块,将所有访问非443端口的请求,url地址内容不变,将http://变成https://。

5、查看一下httpd.conf,如果以下几项给注释掉了,就打开这些选项:
LoadModule rewrite_module        libexec/mod_rewrite.so
AddModule mod_rewrite.c

6、还要再注意两点:1、设置<VirtualHost _default_:443></VirtualHost>外,还要再设置一个普通的<VirtyalHost ServerIP></VirtualHost>;2、在<IfDefine SSL>Listen ServerIP:443</IfDefine>之外,还要再Listen ServerIP:80,这样用户访问http://domain的时候才会跳转到https://domain。

7、运行配置文件检查命令
       apache/bin/apachectl configtest
       如显示Syntax OK,则表示整个操作成功。那么可以到第6步。否则根据提示信息进行调试。但只要按照此文所说进行操作是不会出错的。

8、停止apache再启动
       /usr/local/apache/bin/apachectl stop
       /usr/local/apache/bin/apachectl startssl
用netstat -lpn看一下监听的端口,看apache有没有同时监听80和443端口,如果有则在浏览器上访问一下,应该可以跳转了!

注:部分内容摘自http://blog.csdn.net/arcow/archive/2006/10/25/1350104.aspx,结合自己的实际操作经验修改,欢迎指正或转载。



本文转自 转身撞墙角 51CTO博客,原文链接:本文转自 转身撞墙角 51CTO博客,原文链接:http://blog.51cto.com/chentianwang/1765757
相关文章
|
15天前
|
网络安全 Apache
Apache服务器安装SSL证书
Apache服务器安装SSL证书
19 0
|
1月前
File和FTP和HTTP软件配置
File和FTP和HTTP软件配置
|
9天前
|
运维 Java 应用服务中间件
Tomcat详解(七)——Tomcat使用https配置实战
Tomcat详解(七)——Tomcat使用https配置实战
20 4
|
12天前
|
域名解析 网络协议 应用服务中间件
阿里云服务器配置免费https服务
阿里云服务器配置免费https服务
|
16天前
|
域名解析 网络协议 应用服务中间件
阿里云SSL证书配置(HTTPS证书配置)
该内容是一个关于如何在阿里云上准备和购买SSL证书,以及如何为网站启用HTTPS的步骤指南。首先,需要注册并实名认证阿里云账号,然后在SSL证书控制台选择证书类型、品牌和时长进行购买。申请证书时填写域名信息,并进行DNS验证,这包括在阿里云域名管理板块添加解析记录。完成验证后提交审核,等待证书审核通过并下载Nginx格式的证书文件。最后,将证书配置到网站服务器以启用HTTPS。整个过程涉及账户注册、实名认证、证书购买、DNS设置和证书下载及安装。
78 0
|
17天前
|
应用服务中间件 网络安全 nginx
nginx配置https访问
nginx配置https访问
27 0
|
27天前
|
应用服务中间件 nginx
nginx配置https和直接访问静态文件的方式
nginx配置https和直接访问静态文件的方式
28 3
|
27天前
|
前端开发 应用服务中间件 网络安全
http转为https,ssl证书安装及nginx配置
http转为https,ssl证书安装及nginx配置
43 1
|
1月前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
30 0

推荐镜像

更多