Fork me on GitHub

logo我的个人地带

努力每一天,每天进步一点点,每天快乐一点点

thinkcmf/thinkphp URL重写 伪静态

apache

.htaccess 文件

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api/?(.*)$ api.php?s=$1 [QSA,PT,L]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>


nginx

server{
    listen 80;
    server_name  demo.thinkcmf.com;
    root 你的 ThinkCMF6.0目录/public; # 该项要修改为你准备存放相关网页的路径
    
    location / {
        index  index.php index.html index.htm;
         #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
         if (!-e $request_filename)
         {
            #地址作为将参数rewrite到index.php上。
            rewrite ^/(.*)$ /index.php?s=$1;
            #若是子目录则使用下面这句,将subdir改成目录名称即可。
            #rewrite ^/subdir/(.*)$ /subdir/index.php?s=$1;
         }
    }
    
    location /api/ {
        index  index.php index.html index.htm;
         #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
         if (!-e $request_filename)
         {
            #若是子目录则使用下面这句,将subdir改成目录名称即可。
            rewrite ^/api/(.*)$ /api.php?s=$1;
         }
    }
    
    location ~* ^\/upload\/.+\.(html|php)$ {
        return 404;
    }
    
    location ~* ^\/plugins\/.+\.(html|php)$ {
        return 404;
    }
    
    location ~* ^\/themes\/.+\.(html|php)$ {
        return 404;
    }
    
    #proxy the php scripts to php-fpm
    location ~ \.php {
            include fastcgi_params;
            ##pathinfo支持start
            #定义变量 $path_info ,用于存放pathinfo信息
            set $path_info "";
            #定义变量 $real_script_name,用于存放真实地址
            set $real_script_name $fastcgi_script_name;
            #如果地址与引号内的正则表达式匹配
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                    #将文件地址赋值给变量 $real_script_name
                    set $real_script_name $1;
                    #将文件地址后的参数赋值给变量 $path_info
                    set $path_info $2;
            }
            #配置fastcgi的一些参数
            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
            ###pathinfo支持end
        fastcgi_intercept_errors on;
        
        fastcgi_pass   127.0.0.1:9000; 
        # fastcgi_pass 如果是 sock形式,可能是下面的配置
        # fastcgi_pass unix:/tmp/php-cgi.sock
    }

}


Comments 0