本规则是基于蓝海豚导购程序的rewreite规则。
本人想把如下.htaccess 规则 转换成 nginx规则,求助...
<IfModule mod_rewrite.c> RewriteEngine On #RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [L] </IfModule>
学习是最好的投资!
更准确的提法是:如何把Apache的rewrite规则转换成nginx的。——.htaccess只是手段不必多提,但涉及的模块是rewrite才必须强调,因为如果是别的模块可能nginx会无对应功能。
两种思路:
上面规则的意思如果URI对应的文件或文件夹不存在就进行rewrite。apache的%{REQUEST_FILENAME}在nginx与之对应的是$uri,所以你上面的规则可以用如下的try_files 配置
try_files $uri $uri/ /index.php/$uri&$args;
try_files的作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
$args 表示url中的参数。
if (!-f $request_filename){ set $rule_0 1$rule_0; } if (!-d $request_filename){ set $rule_0 2$rule_0; } if ($rule_0 = "21"){ rewrite ^/(.*)$ /index.php/ last; }
Apache重写规则转换为Nginxhttp://www.51ask.org/apache2n...
更准确的提法是:如何把Apache的rewrite规则转换成nginx的。——.htaccess只是手段不必多提,但涉及的模块是rewrite才必须强调,因为如果是别的模块可能nginx会无对应功能。
两种思路:
上面规则的意思如果URI对应的文件或文件夹不存在就进行rewrite。apache的%{REQUEST_FILENAME}在nginx与之对应的是$uri,所以你上面的规则可以用如下的try_files 配置
try_files的作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
$args 表示url中的参数。
Apache重写规则转换为Nginx
http://www.51ask.org/apache2n...