recherche

Maison  >  Questions et réponses  >  le corps du texte

thinkphp nginx configure la réécriture et l'adresse aura un .php supplémentaire

thinkphp réécriture de la configuration nginx, l'adresse sera un .php
supplémentaire, http://localhost:7080/.php?m=...
fichier de configuration nginx
server
{

    listen 80;
    #listen [::]:80;
    server_name localhost 192.168.150.79 doc.mall.com;
    index index.html index.htm index.php default.html default.htm default.php;
    root  /data/www/wwwroot/mall_doc;

inclure none.conf;

    #error_page   404   /404.html;
    location / {
            if (!-e $request_filename)
    {
            rewrite ^/index.php(.*)$ /index.php?s= last;
            rewrite ^(.*)$ /index.php?s= last;
            rewrite ^/(.*)$ /index.php/;
    }
    }

emplacement ~ .php {

            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            set $path_info "";
            set $real_script_name $fastcgi_script_name;
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                    set $real_script_name ;
                    set $path_info ;
            }
            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
            expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
            expires      12h;
    }

access_log  /data/www/wwwlogs/doc.mall.access_log;

}

réécrire ^/index.php(.*)$ /index.php?s=$1 dernier;
réécrire ^(.*)$ /index.php?s=$1 dernier;
réécrire ^/(.*)$ / index.php/$1;
Les trois méthodes ont été essayées
'URL_MODEL' => 2,
La version php est PHP 7.1.5

La version de Nginx est : nginx/1.12.0

Quelqu'un a-t-il rencontré cette situation ?
la version php est accessible normalement sur 5.6.9

为情所困为情所困2784 Il y a quelques jours900

répondre à tous(2)je répondrai

  • 某草草

    某草草2017-06-16 09:20:37

    Ce problème s'est également produit lorsque j'ai configuré THINKCMF auparavant

        if(!defined('_PHP_FILE_')) {
            if(IS_CGI) {
                //CGI/FASTCGI模式下
                $_temp  = explode('.php',$_SERVER['PHP_SELF']);
                define('_PHP_FILE_',    rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
            }else {
                define('_PHP_FILE_',    rtrim($_SERVER['SCRIPT_NAME'],'/'));
            }
        }

    Plus tard, j'ai découvert que le problème était ce problème de chemin $_SERVER['SCRIPT_NAME'] dans la constante. Il existe 2 solutions
    1 Vous modifiez les données dans la constante
    2 Utilisez APACHE
    J'y pense. deux méthodes maintenant
    De plus, vous pouvez suivre mon blog Notes d'étude du programmeur PHP

    répondre
    0
  • 巴扎黑

    巴扎黑2017-06-16 09:20:37

        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }
        
        
        location ~ \.php {
            
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_split_path_info ^(.+\.php)(.*)$;     
             fastcgi_param PATH_INFO $fastcgi_path_info;    
             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             include        fastcgi_params;
        }

    répondre
    0
  • Annulerrépondre