码迷,mamicode.com
首页 > Web开发 > 详细

【Apache】Rewrite模块

时间:2021-03-01 14:13:40      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:clu   module   跳转   include   完整   lang   http   directory   targe   

加载模块

在httpd.conf文件里使下面模块生效:

LoadModule ssl_module modules/mod_ssl.so # 如果使用https证书,这个模块功能一定要打开!
LoadModule rewrite_module modules/mod_rewrite.so # 重写模块

配置根目录

在httpd.conf文件里添加:

DocumentRoot "/data/vhosts"
<Directory "/data/vhosts">
    Options FollowSymLinks MultiViews Includes
    AllowOverride All # AllowOverride None一定要修改为AllowOverride All
    Require all granted
</Directory>

设置重写

http跳转到https

在网站根目录下面添加该文件".htaccess"目录访问控制文件(或直接修改httpd.conf文件),并添加如下内容:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>

目的:让用户访问传统的http://转到https://上来。

第一句:启动Rewrite引擎;
第三句:RewriteCond是重写条件,!^443$是正则表达式,!表示否定,^是开头,$是结束;
第四句:.*是任何数量的任意字符,%{SERVER_NAME}是服务器域名或IP,%{REQUEST_URI}是请求路径,R表示重定向,L表示立即停止重写(不再应用其他重写规则);
整句的意思是讲:启动Rewrite模块,将所有访问非443端口的域名请求,url地址内容不变,将http://变成https://。

某些页面跳转

实现某个页面的https跳转需求:
访问http://baidu.com/beijing/...... 强制跳转到https://baidu.com/beijing/......

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} /beijing
RewriteRule ^.*$ https://%{SERVER_NAME}/beijing/ [R,L]
</IfModule>

此时%{SERVER_NAME}就是baidu.com,%{REQUEST_URI}就是/beijing。

扩展阅读:Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结(完整版)

【Apache】Rewrite模块

标签:clu   module   跳转   include   完整   lang   http   directory   targe   

原文地址:https://www.cnblogs.com/ageovb/p/14460015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!