Windows开启伪静态,主机IIS7开启伪静态,IIS7打开Rewite,windows服务器设置伪静态,URL重写,URL重写模块
首先要下载rewrite 的64位的组件 rewrite_x64_zh-CN.msi。官方的下地址是:http://www.microsoft.com/zh-cn/download/details.aspx?id=7435 Continue reading
Windows开启伪静态,主机IIS7开启伪静态,IIS7打开Rewite,windows服务器设置伪静态,URL重写,URL重写模块
首先要下载rewrite 的64位的组件 rewrite_x64_zh-CN.msi。官方的下地址是:http://www.microsoft.com/zh-cn/download/details.aspx?id=7435 Continue reading
本地原来是phpStudy集成工具,但IIS没有使用集成中的,是自己直接windows中安装的,本地测试时直接IIS中新建网站,设置新端口,只使用着phpStudy中的mysql和php。
最近的这个项目基本是使用SVN上传到服务器的,直接在实际环境中开发,有好处也有坏处。好处就是开发完成后,直接就可以使用了;不好的地方就是上传太频繁。那么在本地开发的优缺点正好与上面的相反,好处就是不用频繁上传等,改完直接浏览器测试;不好的地方就是开发完成后,放到实际环境中就可能会出现N吨BUG,也是很头疼的。
最近这项目由于上传操作太频繁了,所以想着远程与本地开发结合一下,突然想不用phpStudy,试试宝塔,下载>>安装>>基础配置>>建站测试,也是折腾了有十个八个小时的样子
现在基本环境是apache+php+mysql Continue reading
在网站根目录创建文件 bcloud_nginx_user.conf
将伪静态规则写在中括号内 location / { …… }
下面是一位客户从百度的Lighttpd环境迁移到Nginx环境之后,我帮他修改的规则。
0 1 2 3 4 5 6 7 8 9 |
location / { rewrite ^(.*)/admin_ccc/index.php/(.*).html$ $1/admin/index.php?s=$2 last; rewrite ^(.*)/admin_ccc/kindeditor/plugins/baidumap/map(.*).html$ $1/admin/kindeditor/plugins/baidumap/map.html?$2 last; rewrite ^(.*)/Search/index.html?name\=(.*)$ $1/index.php/Search/index.html?name=$2 last; rewrite ^(.*)/Common/verify.html?(.*)$ $1/index.php/Common/verify.html?$2 last; rewrite ^(.*)/(Feedback|Inquiry)/$ $1/index.php?s=$2 last; rewrite ^(.*?)/((?!sitemap).*).html$ $1/index.php?s=$2 last; } |
写完规则,记得重启nginx,才能去吃饭哦!!!
相关文档:
1.Rewrite规则简介
Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。
基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。
基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性(httpd.conf中的Option FollowSymLinks)且在.htaccess里要声明RewriteEngine on。
2. Apache mod_rewrite规则中的标记含义
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
1) R[=code](force redirect) 强制外部重定向 强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。 2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。 3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。 4) P(force proxy) 强制使用代理转发。 5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写,不再应用其他重写规则。这个标记用于阻止当前已被重写的URL被后继规则再次重写,它对应于Perl中的last命令或C语言中的break命令。 6) N(next round) 重新从第一条规则开始运行重写过程。 7) C(chained with next rule) 与下一条规则关联 如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。 8) T=MIME-type(force MIME type) 强制MIME类型 9) NS (used only if no internal sub-request) 只用于不是内部子请求 10) NC(no case) 不区分大小写 11) QSA(query string append) 追加请求字符串 12) NE(no URI escaping of output) 不在输出转义特殊字符 例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo 13) PT(pass through to next handler) 传递给下一个处理 例如: RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理 Alias /def /ghi 14) S=num(skip next rule(s)) 跳过num条规则 15) E=VAR:VAL(set environment variable) 设置环境变量 |
==常用变量:
详细变量介绍,查看>>Apache Rewrite服务器常用变量汇总
%{QUERY_STRING} URL参数(Query String)是URL里面“?”后面的部分,它通常用于传输参数给CGI脚本或者其它动态页面。在Apache中,该值存储在环境变量QUERY_STRING中(在PHP中,可以通过$_SERVER['QUERY_STRING']访问到),是Apache定义的“变量=值”向量(数组)。 在Apache中,大多对URL进行操作的指令,如、Redirect、Alias和RewriteRule,都不能直接访问该数据;不过,mod_rewrite模块却可以对URL参数进行添加、删除和修改。其中的关键就是使用RewriteCond来匹配%{QUERY_STRING}变量,如果需要的话,还可以使用[QSA]标志来附加URL参数。
%1、%2…%n 是反向引用,来自之前的RewriteCond中正则表达式的匹配结果
%{HTTP_HOST} 保存主机头信息,也就是当前访问的域名,即“http://”和之后第一个“/”之间的内容。如果访问地址是http://www.mrdede.com/aaa,则%{HTTP_HOST}=www.mrdede.com;如果访问http://cdn.www.mrdede.com/,%{HTTP_HOST}=cdn.www.mrdede.com
%{SERVER_PORT} 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值
httpd.conf配置如下:
0 1 2 3 |
<virtualhost *> ServerName mrdede.com ServerAlias www.mrdede.com </virtualhost> |
客户端访问域名www.mrdede.com
%{HTTP_HOST} = www.mrdede.com
%{SERVER_NAME} = mrdede.com
所以,在实际程序中,应尽量使用%{HTTP_HOST} ,比较保险和可靠。
%{SERVER_PORT} 端口号
%{REQUEST_URI} 假设访问地址为http://mrdede.com/aaa/index.php?b=1&c=2,则%{REQUEST_URI}的值是http://mrdede.com后面包含正斜杠“/”在内的内容,即%{REQUEST_URI}=/aaa/index.php?b=1&c=2
%{HTTP_USER_AGENT} 是User-agent信息
==指令:
RewriteBase 定义了重写基准目录。
3.目录级(.htaccess)实例说明 Continue reading