Nginx的Rewrite重写规则与apache对比linux网页制作
“sandyjason”通过精心收集,向本站投稿了3篇Nginx的Rewrite重写规则与apache对比linux网页制作,下面是小编帮大家整理后的Nginx的Rewrite重写规则与apache对比linux网页制作,希望对大家有所帮助。
篇1:Nginx的Rewrite重写规则与apache对比linux网页制作
nginx的rewrite重写规则与apache对比
nginx rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令,一个简单的nginx rewrite规则语法如下:
rewrite ^/b/(.*).html /play.php教程?video=$1 break;
如果加上if语句,示例如下:
if (!-f $request_filename)
{
rewrite ^/img/(.*)$ /site/$host/images/$1 last;
}
nginx与apache的rewrite规则实例对比
简单的nginx和apache 重写规则区别不大,基本上能够完全兼容。例如:
apache rewrite 规则:
rewriterule ^/(mianshi|xianjing)/$ /zl/index.php?name=$1 [l]
rewriterule ^/ceshi/$ /zl/ceshi.php [l]
rewriterule ^/(mianshi)_([a-za-z]+)/$ /zl/index.php?name=$1_$2 [l]
rewriterule ^/pingce([0-9]*)/$ /zl/pingce.php?id=$1 [l]
nginx rewrite 规则:
rewrite ^/(mianshi|xianjing)/$ /zl/index.php?name=$1 last;
rewrite ^/ceshi/$ /zl/ceshi.php last;
rewrite ^/(mianshi)_([a-za-z]+)/$ /zl/index.php?name=$1_$2 last;
rewrite ^/pingce([0-9]*)/$ /zl/pingce.php?id=$1 last;
由以上示例可以看出,apache的rewrite规则改为nginx的rewrite规则,其实很简单:apache的rewriterule指令换成nginx的rewrite指令,apache的[l]标记换成nginx的last标记,中间的内容不变。
如果apache的rewrite规则改为nginx的rewrite规则后,使用nginx -t命令检查发现nginx.conf配置文件有语法错误,那么可以尝试给条件加上引号。例如一下的nginx rewrite规则会报语法错误:
rewrite ^/([0-9]{5}).html$ /x.jsp教程?id=$1 last;
加上引号就正确了:
rewrite “^/([0-9]{5}).html$” /x.jsp?id=$1 last;
apache与nginx的rewrite规则在url跳转时有细微的区别:
apache rewrite 规则:
rewriterule ^/html/tagindex/([a-za-z]+)/.*$ /$1/ [r=301,l]
nginx rewrite 规则:
rewrite ^/html/tagindex/([a-za-z]+)/.*$ $host/$1/ permanent;
以上示例中,我们注意到,nginx rewrite 规则的置换串中增加了“$host”,这是在nginx中要求的,
另外,apache与nginx的rewrite规则在变量名称方面也有区别,例如:
apache rewrite 规则:
rewriterule ^/user/login/$ /user/login.php?login=1&forward=%{http_host} [l]
nginx rewrite 规则:
rewrite ^/user/login/$ /user/login.php?login=1&forward=$host last;
apache与nginx rewrite 规则的一些功能相同或类似的指令、标记对应关系:
apache的rewritecond指令对应nginx的if指令;
apache的rewriterule指令对应nginx的rewrite指令;
apache的[r]标记对应nginx的redirect标记;
apache的[p]标记对应nginx的last标记;
apache的[r,l]标记对应nginx的redirect标记;
apache的[p,l]标记对应nginx的last标记;
apache的[pt,l]标记对应nginx的last标记;
允许指定的域名访问本站,其他域名一律跳转到www.aaa.com
apache rewrite 规则:
rewritecond %{http_host} ^(.*?).domain.com$
rewritecond %{http_host} !^qita.domain.com$
rewritecond %{document_root}/market/%1/ -f
rewriterule ^/wu/$ /market/%1/ [l]
nginx的if指令不支持嵌套,也不支持and、or等多条件匹配,相比于apache的rewritecond,显得麻烦一些,但是,我们可以通过下一页的nginx配置写法来实现这个示例:
nginx rewrite 规则:
if ($host ~* ^(.*?).domain.com$)
{
set $var_wupin_city $1;
set $var_wupin ‘1′;
}
if ($host ~* ^qita.domain.com$)
{
set $var_wupin ‘0′;
}
if (!-f $document_root/market/$var_wupin_city/)
{
set $var_wupin ‘0′;
}
if ($var_wupin ~ ‘1′)
{
rewrite ^/wu/$ /market/$var_wupin_city/ last;
}
篇2:iis 与apache防盗链方法linux网页制作
目前有一种产品能比较好地支持iis的urlrewrite,名字叫isapi_rewrite,
对于我的网站,我防盗链的方法是在httpd.ini里面加入如下语句
rewritecond host: (.+)
rewritecond referer: (?!1.*).*
rewriterule .*.(?:gif|jpg|png|exe|rar|zip) /block.gif [i,
o]修改安装目录中的httpd.ini文件(如果这个文件为“只读”属性,则去掉“只读”之后再修改)
添加:
rewritecond host: (.+)rewritecond referer: (?!1.*).*
rewritecond referer: (?!(.*)(.baidu.com|.google.com|.google.cn|.g.cn|.gougou.com|.soso.com|.sogou.com|.youdao.com|.bing.com|.yahoo.com|.yahoo.cn|.eojoo.com)).*
rewriterule .*.(?:gif|jpg|jpeg|png|bmp) /block.gif [i,o,n]
apache
开启图片防盗链功能需要在htaccess文件中加入以下代码:
rewriteengine on
rewritecond %{http_referer} !^$
rewritecond %{http_referer} !^(www.)?allow1.com(/)?.*$ [nc]
rewritecond %{http_referer} !^(www.)?allow2.com(/)?.*$ [nc]
rewriterule .*.(gif|jpg|jpeg|bmp|png)$ [r,nc,l]
篇3:nginx/apache/iis 伪静态写法与区别linux网页制作
由于工作原因我要把一个伪静态写成实例nginx apache iis三种缓存,下面我们来分别我的实例
apache 伪静态写法
rewriteengine onrewriterule /rss/(.*).xml$ /rss/rss.php教程?a=$1
rewriterule /xml/(.*).xml$ /xml/xml.php?a=$1
iis 伪静态写法
rewriterule /rss/(.*).xml$ /rss/rss.php?a=$1 [n,i]rewriterule /xml/(.*).xml$ /xml/xml.php?a=$1 [n,i]
nginx伪静态写法
rewrite ^/rss/(.*).xml$ /rss/rss.php?a=$1 last;rewrite ^/xml/(.*).xml$ /xml/xml.php?a=$1 last;
它们三者的区别总结
看到上面三个实例,关于nginx/apache/iis 伪静态写法 apache与iis 就是在后面加[n,i]而iis与nginx伪静态写法区别是 开头^并且结束处加个last就行了,
nginx/apache/iis 伪静态写法与区别linux网页制作
,
一句话他们是大同小义了。
【Nginx的Rewrite重写规则与apache对比linux网页制作】相关文章:
1.网页制作合同
2.网页制作策划书
3.网页制作个人简历
4.网页设计制作规范
5.网页制作教学论文
6.网页制作实习日记
7.网页制作笔试题
10.如何优化网页制作流程?






文档为doc格式