简述

Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。

基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。

基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。

配置方法

1.修改Apache主配置文件

删除LoadModule rewrite_module modules/mod_rewrite.so前#

2.想通过.htaccess也能设置Rewrite规则

将网站目录配置段的"AllowOverride"改成"All",不同的虚拟机要单独配置

3.配置项解析

RewriteEngine On|Off
是否开启Rewire功能
Rewrite功能不会继承,多个虚拟机要单独设置

ReWriteRule规则

设置Rewrite重写规则,一般写在.htaccess里面,放在根目录;.htaccess不用重启Apache;
原子组的引用$1,$2...
[L]为休止符,每个L为一个段落
[NC]不区分大小写

<VirtualHost 192.168.1.22:80>ServerAdmin Example.comDocumentRoot /var/www/htmlServerName 192.168.1.22ErrorLog logs/error_logCustomLog logs/access_log common<IfModule mod_rewrite.c>RewriteEngine OnRewriteRule (.*)\.py$ http://192.168.1.22/$1.php #rewrite规则</IfModule>
</VirtualHost>

RewriteCond

Rewrite重写条件,如果条件不满足,放弃RewriteRule规则匹配,除非设置RewriteCond条件时加[OR]标记
用%{} 来输出Apache变量

RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC] #如果请求的是图片;

Apache Rewrite 服务器变量介绍

第一部分: HTTP headers 部分参数

参数名称: HTTP_USER_AGENT

样例参考值: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.8)
Gecko/2009032609 Firefox/3.0.8 说明: 相当于PHP中的服务器参数:
$_SERVER["HTTP_USER_AGENT"]

参数名称: HTTP_REFERER

样例参考值: http://www.test.cn/test.php 说明: 相当于PHP中的服务器参数:
$_SERVER["HTTP_REFERER"]

参数名称: HTTP_COOKIE

样例参考值: ZDEDebuggerPresent=php,phtml,php3 说明: 相当于PHP中的服务器参数:
$_SERVER["HTTP_COOKIE"]

参数名称: HTTP_FORWARDED

样例参考值: 如果使用代理服务器的话会是代理服务器的IP地址, 本地不容易搭环境测试出值来.
说明: 相当于PHP中的服务器参数: $_SERVER["HTTP_FORWARDED"]

参数名称: HTTP_HOST

样例参考值: www.test.com 说明: 相当于PHP中的服务器参数: $_SERVER["HTTP_HOST"]

参数名称: HTTP_PROXY_CONNECTION

样例参考值: 网络连接代理方面的信息. 和HTTP_FORWARDED参数一样. 本地不容易搭环境测 试出值来. 说明: PHP中貌似未提供这样的服务器信息值. 如果又的话可能等值于:
$_SERVER["HTTP_PROXY_CONNECTION"]

参数名称: HTTP_ACCEPT

样例参考值: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 说明: 相当于PHP
中的服务器参数: $_SERVER["HTTP_ACCEPT"]

第二部分: server internals 部分参数

参数名称: DOCUMENT_ROOT

样例参考值: C:/webRoot/t 说明: 相当于PHP中的服务器参数:
$_SERVER["DOCUMENT_ROOT"]

参数名称: SERVER_ADMIN

样例参考值: youemailaddress@gmail.com 说明: 相当于PHP中的服务器参数:
$_SERVER["SERVER_ADMIN"]

参数名称: SERVER_NAME

样例参考值: www.test.com 说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_NAME"]

参数名称: SERVER_ADDR

样例参考值: 127.0.0.1 说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_ADDR"]

参数名称: SERVER_PORT

样例参考值: 80 说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_PORT"]

参数名称: SERVER_PROTOCOL

样例参考值: HTTP/1.1 说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_PROTOCOL"]

参数名称: SERVER_SOFTWARE

样例参考值: Apache/2.2.11 (Win32) PHP/5.2.9-1 说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_SOFTWARE"]

第三部分: connection & request 部分参数

参数名称: REMOTE_ADDR

样例参考值: 127.0.0.1 正在浏览当前页面用户的 IP 地址。 说明: 相当于PHP中的服务器参数:
$_SERVER["REMOTE_ADDR"]

参数名称: REMOTE_HOST

样例参考值: 127.0.0.1 正在浏览当前页面用户的主机名。反向域名解析基于该用户的
REMOTE_ADDR 说明: 相当于PHP中的服务器参数: $_SERVER["REMOTE_HOST"]

参数名称: REMOTE_PORT

样例参考值: 2574 (变化的值)用户连接到服务器时所使用的端口 说明: 相当于PHP中的服务器参数: $_SERVER["REMOTE_PORT"]

参数名称: REMOTE_USER

样例参考值: 空 说明: PHP 好像未提供相关的$_SERVER值.

参数名称: REMOTE_IDENT

样例参考值: 空 说明: PHP 好像未提供相关的$_SERVER值.

参数名称: REQUEST_METHOD

样例参考值: GET 说明: 相当于PHP中的服务器参数:$_SERVER["REQUEST_METHOD"]

参数名称: SCRIPT_FILENAME

样例参考值: C:/webRoot/t/share77.html 说明: 相当于PHP中的服务器参数:
$_SERVER["SCRIPT_FILENAME"]

参数名称: PATH_INFO

样例参考值: 空 说明: 相当于PHP中的服务器参数: $_REQUEST["PATH_INFO"]

参数名称: QUERY_STRING

样例参考值: a=b&c=d&e=f 说明: 相当于PHP中的服务器参数: $_SERVER["QUERY_STRING"]

参数名称: AUTH_TYPE

样例参考值: 空 当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个是认证的类型。说明: 相当于PHP中的服务器参数: $_SERVER["AUTH_TYPE"]

第四部分: date and time 部分参数

参数名称: TIME_YEAR

样例参考值: 2009 说明: 服务器获取当前的年份值

参数名称: TIME_MON

样例参考值: 04 说明: 服务器获取当前的月份值

参数名称: TIME_DAY

样例参考值: 22 说明: 服务器获取当前的日值

参数名称: TIME_HOUR

样例参考值: 16 说明: 服务器获取当前时间的小时

参数名称: TIME_MIN

样例参考值: 26 说明: 服务器获取当前时间的分钟

参数名称: TIME_SEC

样例参考值: 34 说明: 服务器获取当前时间的秒

参数名称: TIME_WDAY

样例参考值: 3 说明: 服务器获取当天是星期几, 从星期日-星期六, 数字从 0-6

参数名称: TIME

样例参考值: 20090422162634 说明: 服务器获取当前的时间, 格式为: 年月日时分秒

第五部分: specials 部分参数

参数名称: API_VERSION

样例参考值: 20051115:21 说明: apache 的 API 版本信息.

参数名称: THE_REQUEST

样例参考值: GET /share77.html HTTP/1.1 说明: 浏览器发给服务器的请求值. 不包括其他的头信息.

参数名称: REQUEST_URI

样例参考值: /share77.html 说明: 浏览器请求的资源信息.

参数名称: REQUEST_FILENAME

样例参考值: C:/webRoot/t/share77.html 说明: 被请求的资源的在磁盘的物理地址.

参数名称: IS_SUBREQ

样例参考值: false 说明: 如果是 sub-request 则显示为 true, 否则为 false.

参数名称: HTTPS

样例参考值: off 说明: 如果连接使用 SSL/TLS 模式, 则值为on , 否则值为off, 这个参数比较安全, 即使未载入 mod_ssl 模块时.

转载于:https://www.cnblogs.com/nixi8/p/5143393.html

【Apache运维基础(4)】Apache的Rewrite攻略(1)相关推荐

  1. 运维必看,zabbix详细攻略,监控原理、监控流程、部署流程

    Zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管 ...

  2. 运维基础(9)Linux性能调优三大系统

    这个系统好慢.网站又打不开了,太卡了,又没响应了!"相信大家都遇到过这种抱怨,这是应用系统出现了性能问题,需要性能调优. 性能调优,要求对计算机硬件.操作系统和应用有相当深入的了解. 调节三 ...

  3. 运维基础(8)shell脚本

    欢迎关注微信公众号[厦门微思网络].www.xmws.cn专业IT认证培训19周年 主要课程:思科.华为.红帽.ORACLE.VMware.CISP.PMP等认证培训及考证 shell 中各个命令的区 ...

  4. HBase运维基础——元数据逆向修复原理

    摘要: 鉴于上次一篇文章--"云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据"的读者反馈,对HBase的逆向工程比较感兴趣,并咨询如何使用相应工具进行运维等等. ...

  5. 运维基础(11)Linux服务器性能优化

    Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要 ...

  6. 网络运维基础之IP地址学习

    网络运维基础之IP地址学习 一.IP地址介绍 二.IP地址分类 三.IP地址的私有地址 三.IP地址的子网掩码 1.IP地址格式 2.子网掩码计算 一.IP地址介绍 IP地址是IP协议提供的一种统一的 ...

  7. 运维基础(14)Mysql5.7 里4个数据库

    四个系统自带库是information_schema.mysql.performance_schema.sys: 5.6版本自带的库为:information_schema.mysql.perform ...

  8. 运维基础(13)日志切割工具 Logrotate

    Logrotate 程序是一个日志文件管理工具,用于分割日志文件,压缩转存.删除旧的日志文件,并创建新的日志文件,下面就对 logrotate 日志轮转的记录: Linux 系统默认安装 logrot ...

  9. 运维基础(12)服务器12种基本故障+排查方法

    定义举例 从上电(或复位)到自检完成这一段过程中电脑所发生的故障. 可能的故障现象 1. 主机不能加电(如:电源风扇不转或转一下即停等).有时不能加电.开机掉闸.机箱金属部分带电等; 2. 开机无显, ...

  10. 运维基础(10)linux被删数据恢复方法

    https://sourceforge.net/projects/extundelete/extundelete --help 其中,参数(options)有: --version, -[vV],显示 ...

最新文章

  1. d3h 技嘉b365m 黑苹果_黑苹果macOS10.15.4单硬盘三系统安装教程
  2. jvm有哪些内存区域
  3. PAT (Advanced Level) 1070. Mooncake (25)
  4. 树莓派 php mysql 中文_使用树莓派(raspberry pi)搭建网站(nginx+php+mysql+ddclient)
  5. spring事务介绍 1
  6. java按钮添加事件_java中添加按钮并添加响应事件的方法(推荐)
  7. Linux-目录和文件管理(二)
  8. python时间模块倒计时_Python时间模块
  9. ant 使用java 运行类_用ANT构建java可执行程序
  10. in packet sniffer
  11. VS2010 中文版本
  12. 怎么用电脑屏幕录制功能录制游戏视频
  13. Ego的MyBatis框架笔记
  14. python能用来制作游戏吗_python 做游戏开发怎么样?
  15. AndroidStudio使用之仿微信首页界面
  16. CSP开发基础--数字证书调用CSP过程
  17. (六)区块的生成、验证及挖矿
  18. 用VBA合并计算Excel多个工作簿及工作表
  19. 计算机键盘gt,雷神(Thunderobot)911GT-Y1笔记本电脑键盘评测-ZOL中关村在线
  20. 一个关于通过git将本地项目文件上传Gitee的悲伤故事

热门文章

  1. Derby 数据库内涵
  2. 动态电压恢复器(DVR)模型 Matlab/simulink
  3. 解决打开浏览器报proxy服务器发生错误
  4. installshield java_使用InstallShield打包java程序exe以及jdk,安装完成自动运行
  5. iOS MVVM + RxSwift 关键词zip 的调用时机问题
  6. 设计模式--代理模式--深入理解动态代理
  7. 原生js高仿浏览器ctrf+f
  8. aardio - 【开源软件】aardio文件加解密
  9. 泛泛而谈的渲染学习记录(一)—— 描边中的轮廓边缘
  10. Python 云标签——玩点浪漫!