求将apache的伪静态规则转换成nginx

提问者:BOOS 提问时间:2016年06月04日 人气:1
用户提问
这个伪静态规则目前只有apache的,我自己不知道怎么转换,求大神帮忙解决问题。小弟在此非常感谢!
# BEGIN
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /plus/htaccess/html.php [L]
</IfModule>
# END
推荐答案
  RewriteEngine On
  RewriteRule ^/([a-z]+)/p_([0-9]+)\.html$ /list\.php\?id=$1
  以上为apache的伪静态规则。下面为转换后的nginx规则:
  rewrite ^/([a-z]+)/p_([0-9]+)\.html$ /list.php?id=$1 last;
  注意:apache后则不能直接使用点和问号,所以将/list\.php\?id=$1中的"\"去掉,即:/list.php?id=$1
  然后,将RewriteRule 换为 rewrite,并在在每条规则后加上”last;“
  这样逐条修改就完成了。
辅助答案
用户:请叫我雨泽丶
2016年06月30日
location /
{
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php?$1 last;
}
}

阁下的代码意在将路径中的index.php隐藏,同时还得保证像图像CSS等文件不被规则所限制,那么可参考我写的这个:

1

if (!-e $request_filename)//此句是指当访问的是URL不是一个切实存在的文件时,则执行下面的重写规则。

至少阁下还有一句:

1

RewriteCond %{REQUEST_URI} ^system.*

它的作用是什么?是要将system开头的URL都直接访问不经过重写规则还是禁止访问?