内容简介:Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virt
简述
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.com
DocumentRoot /var/www/html
ServerName 192.168.1.22
ErrorLog logs/error_log
CustomLog logs/access_log common
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (.*)\.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 模块时.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Dagger2使用攻略-基础部分
- 程序员练级攻略(2018):前端基础和底层原理
- 【Apache运维基础(5)】Apache的Rewrite攻略(2).htaccess文件
- WKWebview 使用攻略
- 系统练级攻略
- 云架构师进阶攻略
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Impractical Python Projects
Lee Vaughan / No Starch Press / 2018-11 / USD 29.95
Impractical Python Projects picks up where the complete beginner books leave off, expanding on existing concepts and introducing new tools that you’ll use every day. And to keep things interesting, ea......一起来看看 《Impractical Python Projects》 这本书的介绍吧!