浅谈apache和nginx的rewrite的区别
浅谈Apache与Nginx的Rewrite规则差异
对于想要了解Apache和Nginx之间Rewrite规则差异的朋友们,本文将会给出一个简单的比较和参考。
我们来了解一下Nginx的Rewrite规则相关指令。Nginx的Rewrite规则主要包括if、rewrite、set、return、break等指令,其中rewrite是最为关键的指令。一个简单的Nginx Rewrite规则语法如下:
```css
rewrite ^/b/(.).html /play.php?video=$1 break;
```
当加入if语句时,示例如下:
```bash
if (!-f $request_filename)
{
rewrite ^/img/(.)$ /site/$host/images/$1 last;
}
```
接下来,我们对比一下Nginx和Apache的Rewrite规则实例。在简单的Rewrite规则上,Nginx和Apache的区别并不大,基本上能够完全兼容。例如:
Apache的Rewrite规则:
```css
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规则为:
```css
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规则时,需要注意的是,某些情况下需要给条件加上引号。例如:
```css
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规则:
```css
RewriteRule ^/html/tagindex/([a-zA-Z]+)/.$ /$1/ [R=301,L]
```
对应的Nginx Rewrite规则为:
```vbnet
rewrite ^/html/tagindex/([a-zA-Z]+)/.$ permanent;
```
可以看到,在Nginx的Rewrite规则中,置换串中增加了“
具体到示例中的规则,“允许指定的域名访问本站,其他域名一律跳转到
编程语言
- 浅谈apache和nginx的rewrite的区别
- php统计数组不同元素的个数的实例方法
- PHP CURL post数据报错 failed creating formpost data
- PHP addcslashes()函数讲解
- vue 权限认证token的实现方法
- php初始化对象和析构函数的简单实例
- JS实现unicode和UTF-8之间的互相转换互转
- ASP.NET通用权限验证的实现代码思路
- php过滤敏感词的示例
- Global.cs中自动获取未处理的异常
- 在JavaScript中处理字符串之link()方法的使用
- jQuery中insertBefore()方法用法实例
- XSL简明教程(7)XSL 的控制语句
- AngularJS表格详解及示例代码
- FCKEidtor 自动统计输入字符个数(IE)
- jQuery中parents()方法用法实例