在线将Apache Rewrite Rules伪静态规则转换为Nginx Rewrite伪静态规则

一般php的开发者本地使用的都是使用apache服务器,使用伪静态的时候每次都需要转换成nginx rewrite规则,于是做了个在线将Apache htaccess Rewrite伪静态规则自动转换为Nginx Rewrite伪静态规则的工具

使用这个工具可以自动的把下面的apache伪静态规则自动转换nginx rewrite 规则
#apache htaccess rewrite
RewriteRule ^$ /index.php?c=bbs&m=index&a=index [L]
RewriteRule ^([a-zA-Z0-9]+)/$ /index.php?c=bbs&m=index&a=$1 [L]
RewriteRule ^index(_([0-9]*))?.html$ /index.php?c=bbs&m=index&a=index&page=$2 [L]

转换后
#nginx rewrite rules
rewrite ^/$ /index.php?c=bbs&m=index&a=index last;
rewrite ^/([a-zA-Z0-9]+)/$ /index.php?c=bbs&m=index&a=$1 last;
rewrite ^/index(_([0-9]*))?.html$ /index.php?c=bbs&m=index&a=index&page=$2 last;

apache 如何根据域名做rewrite规则

RewriteCond 中的 cond 是conditional条件的缩写,也就是在某些情况下是、在某些情况下否。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^wap.phpff.com [NC]
RewriteRule ^$ /wap.php/wap/index [L]
RewriteRule ^(.*)$ /wap.php/wap/$1 [L,QSA]

解释
1.在RewriteCond命令中使用%{HTTP_HOST}获取环境变量的值,也就是域名信息,如果是wap.phpff.com 这个域名,往下执行RewriteRule规则。
2.如果url是http://wap.phpff.com这样的网址,则重写到/wap.php/wap/index这个url。
3.如果url是http://wap.phpff.com/about这样的网址,则重写到/wap.php/wap/index这个url。

规则参数解释
[NC] —— No Case(不区分大小写): 对客户端请求的URL不区分大小写。它使Pattern忽略大小写,也就是在Pattern与当前URL匹配时,”A-Z”和”a-z”没有区别
[L] —— Last rule(最后一条规则): 告诉服务器在本条规则执行完后停止重写URL。立即停止重写操作,并不再应用其他重写规则。它对应于Perl中的last命令或C语言中的break命令。这个标记用于阻止当前已被重写的URL被后继规则再次重写。例如,使用它可以重写根路径的URL(“/”)为实际存在的URL(比如:”/e/www/”)。
[QSA] —— Append Query String(追加查询字符串): 命令服务器在URL末尾追加查询字符串,以维护GET的URL参数.

Apache url rewrite REQUEST_FILENAME后面参数的意义

下面的 %{REQUEST_FILENAME}、!-f、!-d、[L] 分别是什么意思呢?

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

%{REQUEST_FILENAME}  请求的文件名
!-f  不是文件或不存在
!-d  不是目录或不存在
[L] 这是最后一个匹配项,不再往下匹配