开发者社区> 问答> 正文

.htaccess转换成nginx伪静态规则问题


<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
这是原伪静态规则.htaccess
本地调试工具apache+mysql调试没问题
服务器用的是nginx+mysql,php同样是5.0以上的
伪静态规则转换成:nginx伪静态规则
第一种:打开首页成功,其他页面显示404

location / {
if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php?s=$1 last;
    break;
    }
}


第二种:打开首页成功,其他页面显示404

if (!-d $request_filename){
    set $rule_0 1$rule_0;
}
if (!-f $request_filename){
    set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
    rewrite ^/(.*)$ /index.php/$1 last;
}


百度上面说的方法差不多都是这两种方法,我试过都不行。请教一下大神们,还有没有其他方法啊?

展开
收起
启技艺 2015-09-26 13:33:13 5846 0
2 条回答
写回答
取消 提交回答
  • 码农|Coder| Pythonista
    您好
    您使用的是ThinkPHP吧。
    ThinkPHP除了设置伪静态,还需要开启Pathinfo支持
    2015-09-26 19:46:53
    赞同 展开评论 打赏
  • Rehtaccess转换成nginx伪静态规则问题

    -------------------------

    Rehtaccess转换成nginx伪静态规则问题
    各位大神快显现

    -------------------------

    Rehtaccess转换成nginx伪静态规则问题
    解决了,直接用.

    -------------------------

    Rehtaccess转换成nginx伪静态规则问题
    直接写在.htaccess文件里面
    if (!-e $request_filename) {  
        rewrite ^(.*)$ /index.php?s=$1 last;  
        break;  
        }  
    }
    .conf引用.htaccess,完美解决了。

    -------------------------

    Rehtaccess转换成nginx伪静态规则问题
    等半天没人解答...
    2015-09-26 13:33:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载