将Apache的Rewrite Rule(重写规则)转换为Nginx格式

    说实话,在筹备博客的之前,我一直想为自己建立个私人网络硬盘。后来在无意中发现了Phpdisk提供免费个人版的Php网盘。因为目前大多数在线网盘都是使用ASP,要跑在Win主机上。而大部分的VPS和服务器都是Linux的,没办法跑ASP。所以Php网盘对于个人来说才是更好的选择。用过VPS的朋友都知道Apache虽然很稳定,但是占用内存较多。而且我的VPS安装的又是Nginx,所以在使用Phpdisk的时候就遇到了Rewrite Rule的规则问题。

    之前在用Apache主机的时候很方便,官方提供了.htaccess文件,可以直接上传使用。现在用Nginx不支持.htaccess。咋办呢?于是乎发现了这个网站,用于转换Rewrite Rule的规则。http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

比如Phpdisk官方提供Apache的Rewrite Rule是

RewriteEngine On

RewriteRule ^file/([0-9]+)/([a-zA-Z0-9]*)/?$ viewfile.php?file_id=$1&file_key=$2
RewriteRule ^viewfile/view/([0-9]+)/([a-zA-Z0-9]*)/?$ downfile.php?action=view&file_id=$1&file_key=$2
RewriteRule ^downfile/([0-9]+)/([a-zA-Z0-9]*)/?$ downfile.php?file_id=$1&file_key=$2
RewriteRule ^space/([0-9]+)/?$ space.php?uid=$1

只有把以上内容(除RewriteEngine On)复制到网页左边的.htaccess content中,点击convert按钮,在右边的框中就会出现转换成Nginx的Rewrite Rule。非常方便吧?

但这并不是完整的,你还需要加上location / {}

比如还是上面Phpdisk的Rewrite Rule,转换后应该完整写成

location / {
	   rewrite ^/file/([0-9]+)/([a-zA-Z0-9]*)/?$ /viewfile.php?file_id=$1&file_key=$2;
	   rewrite ^/viewfile/view/([0-9]+)/([a-zA-Z0-9]*)/?$ /downfile.php?action=view&file_id=$1&file_key=$2;
	   rewrite ^/downfile/([0-9]+)/([a-zA-Z0-9]*)/?$ /downfile.php?file_id=$1&file_key=$2;
	   rewrite ^/space/([0-9]+)/?$ /space.php?uid=$1;
	  }

这样就算大功告成了

上传到服务器后重启Nginx就可以生效咯~

希望对大家有所帮助~~