Apache中 RewriteRule 规则参数介绍 摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。...Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制。...比如,在mod_include试图搜索目录默认文件(index.xxx)时,Apache会在内部产生子请求。对于子请求,重写规则不一定有用,而且如果整个规则集都起作用,它甚至可能会引发错误。...‘proxy|P'(强制为代理) 此标记使替换成分被内部地强制作为代理请求发送,并立即中断重写处理,然后把处理移交给mod_proxy模块。.../def /ghi 如果省略了PT标记,虽然将uri=/abc/…重写为filename=/def/…的部分运作正常,但是后续的mod_alias在试图将URI转换到文件名时会遭遇失效。
(){ global $_GET; $nav=$_SERVER[“REQUEST_URI”]; $script_name=$_SERVER[“SCRIPT_NAME”]; $nav...(){ global $_GET; $nav=$_SERVER[“REQUEST_URI”]; $script_name=$_SERVER[“SCRIPT_NAME”]; $nav...利用RewriteRule,可定义含有请求串(Query String)的URL,此时只需在Sustitution中加入一个?,表示此后的内容放入QUERY_STRING变量中。...借助这个标志,可以使用一个重写规则给请求串增加更多的数据。 12. ...用一个小例子来说明它的语义:如果要用mod_rewrite的重写引擎将/abc转换为/def,然后用 mod_alas将/def重写为ghi,则要: RewriteRule ^/abc(.*) /def
}%{REQUEST_URI} [R=301,L] Apache mod_rewrite实现HTTP和HTTPS重定向跳转 当你的站点使用了HTTPS之后,你可能会想把所有的HTTP请求(即端口80的请求...Apache中 RewriteRule跳转规则参数 Apache模块mod_rewrite提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。...比如,在mod_include试图搜索目录默认文件(index.xxx)时,Apache会在内部产生子请求。对于子请求,重写规则不一定有用,而且如果整个规则集都起作用,它甚至可能会引发错误。.../def /ghi 如果省略了PT标记,虽然将uri=/abc/...重写为filename=/def/...的部分运作正常,但是后续的mod_alias在试图将URI转换到文件名时会遭遇失效。...-d RewriteRule ^(.*)$ http://other.kevin.com/$1 [R] 2) 将http://kevin.com/foo/bar的GET请求重定向到http://kevin.com
定制目录的 Index 文件 DirectoryIndex index.html index.php index.htm 你可以使用上面的配置来更改目录的默认页面,例如你将这个脚本放在 foo 目录,则用户请求...使用 GZIP 对输出进行压缩 在 .htaccess 中添加下面的代码可以将所有的 css、js 和 html 使用 GZIP 算法压缩: mod_gzip.c> mod_gzip_on....*) https://%{HTTP_HOST}%{REQUEST_URI} 9. URL 重写 例如要将 product.php?...id=$1 将 product.php?...根据 User-Agent 来阻止请求 SetEnvIfNoCase ^User-Agent$ .
本文主要介绍Apache环境下,如何使用mod_rewrite模块完成URL重写功能。 开启mod_rewrite模块 使用URL重写功能,需要安装mod_rewrite模块。...所以(.*)会匹配{REQUEST_URI}的所有字符。Rewrite重写引擎的输入串是{REQUEST_URI},也就是URL中出去域名以及“?”符号后的所有查询字符。...可以让你的重写条件循环匹配,当你不知道{REQUEST_URI}有多少字符进行匹配的时候很有用。 "last|L" 最后一个规则。...此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下,特殊字符(如‘%’, ‘$’, ‘;’等)会被转义为等值的十六进制编码。...将TestString视为一个路径名并测试它是否存在而且是一个符号连接. 7.‘-F’ (对子请求有效的业已存在的文件)。
如果匹配,则mod_rewrite检查rewrite condition, 如果没有condition,则新的string将替换url,然后进入下一条rewrite rule....‘nosubreq|NS’ (仅用于不对内部子请求进行处理 no internal sub-request) 在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。...比如,在mod_include试图搜索可能的目录默认文件(index.xxx)时, Apache会内部地产生子请求。对子请求,它不一定有用的,而且如果整个规则集都起作用, 它甚至可能会引发错误。...如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。...‘passthrough|PT’ (移交给下一个处理器 pass through) 此标记强制重写引擎将内部结构request_ rec中的uri字段设置为filename字段的值,它只是一个小修改,
所以,Apache收到一个请求并且确定了响应主机(或虚拟主机)之后,重写引擎即开始处理服务器级配置中的所有mod_rewrite指令(此时处于从URL到文件名转换的阶段),此阶段完成后,最终的数据目录便确定了...记住以下两点,会有助于更好地理解: 1、虽然mod_rewrite可以将URL重写为新的URL或文件名,甚至将文件名重写为新的文件名,但是之前的API只提供从URL到文件名的hook。...图-1:重写规则集中的控制流 可见,URL首先与每个规则的Pattern匹配,如果匹配失败,mod_rewrite将立即终止此规则的处理,继而处理下一个规则。...nosubreq|NS (仅用于不对内部子请求进行处理 no internal sub-request) 在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。...比如,在mod_include试图搜索可能的目录默认文件(index.xxx)时, Apache会内部地产生子请求。对子请求,它不一定有用的,而且如果整个规则集都起作用,它甚至可能会引发错误。
THE_REQUEST 这是由浏览器发送的完整的HTTP请求行(比如:”GET /index.html HTTP/1.1″)。 它不包含任何浏览器发送的其它头信息。...REQUEST_URI 这是在HTTP请求行中所请求的资源(比如上述例子中的”/index.html”)。 REQUEST_FILENAME 这是与请求相匹配的完整的本地文件系统的文件路径名。...比如,在mod_include试图搜索可能的目录默认文件(index.xxx)时, Apache会内部地产生子请求。对子请求,它不一定有用的,而且如果整个规则集都起作用, 它甚至可能会引发错误。...本文将针对mod_rewrite和URL匹配的技术细节,以及RewriteCond与RewriteRule 指令格式进行探讨。...比如,在mod_include试图搜索可能的目录默认文件(index.xxx)时, Apache会内部地产生子请求。对子请求,它不一定有用的,而且如果整个规则集都起作用,它甚至可能会引发错误。
(E) 一个基于一定规则的实时重写URL请求的引擎 mod_so (E) 允许运行时加载DSO模块 mod_speling (E) 自动纠正URL中的拼写错误...(1)启用压缩 LoadModule deflate_module modules/mod_deflate.so (2)启用重写 LoadModule rewrite_module...alias_module modules/mod_alias.so (18)url地址重写模块 LoadModule rewrite_module modules/mod_rewrite.so...如果将ServerLimit和MaxClients设置成超过系统的处理能力,Apache可能无法启动,或者系统将变得不稳定。...如果将ThreadLimit和ThreadsPerChild设置成超过系统的处理能力,Apache可能无法启动,或者系统将变得不稳定。
会看到右侧出现很多的元素,每一行都表示一个元素,这些请求,这些访问都会记录到访问日志里面去的,但实际上没有必须记录一些图片、css、js等元素,而这些请求都会记录到日志文件里,就会导致每天的日志访问量很大...i/o,而且这些文件毫无意义,所以需要做一个限制 11.23 访问日志切割 访问日志切割目录概要 日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件 把虚拟主机配置文件改成如下...Expires: Fri, 22 Dec 2017 22:42:28 GMT //过期时间 Content-Type: image/png [root@hf-01 111.com]# 若是将expire...这样的请求才记录日志 实现 在httpd.conf 或者 相关的虚拟主机配置文件中添加 SetEnvIf Request_URI "^/aaa/.*" aaa-request CustomLog...apache日志记录客户端请求的域名 apache日志记录客户端请求的域名 正常情况下,根本就没有必要记录这一项,毕竟大部分都是根据虚拟主机来设置相应的访问日志,但也有个别的情况,比如 ServerName
%{REQUEST_URI} ^something_else_secure RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]...}%{REQUEST_URI} [R=301,L] Apache mod_rewrite实现HTTP和HTTPS重定向跳转 当你的站点使用了HTTPS之后,你可能会想把所有的HTTP请求(即端口80的请求...Moved Permanently,即告诉搜索引擎或者浏览器下去直接访问后者的地址, 如果只是试验性地重定向,可以使用R=302(Found),临时跳转 更多30x状态,请见米扑博客:HTTP协议中POST、GET...、HEAD、PUT等请求方法总结 VirtualHost 添加重定向 实测以上方法,对于我的需求场景,都无效 我的项目场景: 1....对于米扑博客的http请求,全部定向到https博客;对于米扑论坛的http请求,全部定向到https论坛; 最后,解决方案是在 VirtualHost 节点里,添加如下配置: RewriteEngine
最后合并判断即可: if ( $type = abc ) { #将条件外的其他所有请求重写到 cache/域名.ico rewrite ^/(.*)$ /cache/$1.ico last...今天,我将这个图标 API 搬家到了万网的免费主机上,是 Apache 环境,于是按照 nginx 的规则又写了一遍: RewriteEngine on RewriteBase / #重写去掉请求中的...于是各种测试,比如将冒号和斜杠缓存 url 编码都不行! 其实在用 nginx 失败之后,我用 php 获取$_GET['url']发现得到的参数中的 http://会是 http:/,少一个斜杠!...Nginx 伪静态: #将包含http://的请求重写,去掉其中的http://,省去php代码的动态判断(实际上是匹配http:/) rewrite ^/http:/(.*)$ /cache/$1.ico...= 1 ) { #将条件外的其他所有请求重写到 cache/域名.ico rewrite ^/(.*)$ /cache/$1.ico last; } #如果请求的文件已存在,则直接返回给用户
mod_security 是一个安全模块,可以防止多种攻击。...apt-get install libapache-mod-security cd /etc/modsecurity/ cp modsecurity.conf-recommended modsecurity.conf... 5、设置压缩和浏览器缓存 压缩数据可提升吞吐量,设置浏览器缓存可减少请求数,反向提高apache性能。...g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?...gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?
首先,什么是伪静态: 伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。...我们应该选择伪静态还是真静态 1、使用真静态和假静态对SEO来说没有什么区别 2、使用真静态可能将导致硬盘损坏并将影响论坛性能 3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷 4、...""; }else{ $nav=$_SERVER['REQUEST_URI']; echo "1:"....> //伪静态方法三 function mod_rewrite(){ global $_GET; $nav=$_SERVER["REQUEST_URI"]; echo $nav....return $_GET; } mod_rewrite(); $year=$_GET["year"];//结果为'2006' echo $year
#GET请求中NAME的值 $is_args #如果请求中有参数,值为"?"...,否则为空字符串 $uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用...传递给下一级的代理服务器 $request_body_file #将客户端请求主体保存在临时文件中。...#请求的长度 (包括请求的地址,http请求头和请求主体) $request_method #HTTP请求方法,通常为"GET"或"POST" $request_time...$uri更改或重写URI,不包含主机名,例如:"/cnphp/test.php?
You can use the following # workaround to get the desired effect: # BrowserMatch \bMSIE !no-gzip !...g|png)$ no-gzip dont-vary #SetEnvIfNoCase Request_URI .(?:exe|t?...gz|zip|bz2|sit|rar)$ no-gzip dont-vary #SetEnvIfNoCase Request_URI .(?...{User-Agent}i"" (%{ratio}n)' deflate #CustomLog logs/deflate_log deflate 这样整个配置就算完成...而且我们知道jq-min的代码本身已经做了压缩,所以如果是我们平时写的一些html代码的话,整个压缩程度更高,在笔者测试过程中,一般对html可以压缩为原大小的30%甚至更小。这里就不贴图了。
会看到右侧出现很多的元素,每一行都表示一个元素,这些请求,这些访问都会记录到访问日志里面去的,但实际上没有必须记录一些图片、css、js等元素,而这些请求都会记录到日志文件里,就会导致每天的日志访问量很大...AuthUserFile /data/.htpasswd # require valid-user # # mod_rewrite.c...AuthUserFile /data/.htpasswd # require valid-user # # mod_rewrite.c...Apache/2.4.29 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1 [root@hf-01 ~]# 在访问这样的请求...AuthUserFile /data/.htpasswd # require valid-user # # mod_rewrite.c
".*\.js$" img SetEnvIf Request_URI ".*\.css$" img #以上为定义变量:将所有关于图片的请求定义为变量img CustomLog...本行命令的含义是:不记录关于变量img的请求日志。 说明: 将所有访问图片的请求定义为变量img,在访问记录(日志)中将其排除即可。...这样泛解析的形式,所以有必要记录一下用户请求的域名到底是哪个。...apache只记录指定URI的日志 需求: 把类似请求 www.aaa.com/aaa/... 这样的请求才记录日志。 ...说明: 在配置文件添加mod_expires.c模块内容,其余不变。
使用浏览器打开一个网站时,我们可以按F12打开控制台,在Network中可以看到许多在访问时下载的静态文件,这些对静态文件的请求都会记录到访问日志里面的: ?...因为静态的图片太多了,如果每一个请求全都要记录在访问日志里的话,就会导致访问日志一天下来可能得记录几个G甚至十几个G的内容,但是这种静态图片的请求是没必要去记录在访问日志里的,所以我们要让访问日志不记录指定类型的文件...日志都是需要进行自动切割的,因为无论什么日志日积月累地追加记录数据,都会导致文件大小越来越大直至占满整个磁盘,所以有必要让它自动切割,并删除旧的日志文件。...当我们使用浏览器打开一个网站的时候,浏览器会将页面上的静态元素:图片、样式、动画等,缓存到一个目录里存放着,下次访问时就不需要再次请求服务器进行下载了。...所以我们学习一下如何定义静态元素的过期时间,这里需要用到一个模块:mod_expires.c 1.给虚拟主机配置文件增加如下内容: mod_expires.c> ExpiresActive
---- Rewrite基本概述 什么是rewrite Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。...https协议方式 3、伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时建上动态URL地址对外暴露过多的参数,提升更高的安全性。...33/course_33.html redirect; } } #3.重启nginx服务 [root@web03 conf.d]# nginx -s reload ---- 案例五 将http...^(.*) https://$server_name$1 redirect; #return 302 https://$server_name$request_uri; }...(带网站的主目录/code/images/test.jpg) $request_uri 当前请求的文件路径(不带网站的主目录/inages/test.jpg) #大多数用于http协议转gttps协议