dongzou3751 2016-04-28 17:45
浏览 135

Yii2 url重写后缀(php)问题

I Have some url pattern that should work on my website.

[
'pattern'=>'page/result',
'route'=>'site/index',
'suffix'=>'.html'
],
[
'pattern'=>'page/result',
'route'=>'site/index',
'suffix'=>'.php'
],

In these two url suffix .html is working fine but .php suffix is not working in MY Nginx Server. Also check the my site nginx setting.

server {


listen 8081 default_server;
    listen [::]:8081 default_server;

    root /var/www/html/yii2project/frontend/web;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;


    access_log  /var/log/yii2/access.log;
    error_log   /var/log/yii2/error.log;

    server_name yii2.local;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        #try_files $uri $uri/ =404;
           root   /var/www/html/yii2/frontend/web;
           index  index.html index.htm index.php;
           try_files $uri $uri/ /index.php?$args;#now
           #rewrite ^/(.*)$ /$1 last;
           #if ($http_host ~* "^yii2.local:8081"){
           #rewrite ^(.*)$ http://www.yii2.local:8081$1 redirect;
            #}

       }

        #caching of static files
        location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
           expires 365d;
        }


    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    #   include snippets/fastcgi-php.conf;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #
    #   # With php5-cgi alone:
    #   fastcgi_pass 127.0.0.1:9000;
    #   # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include /etc/nginx/fastcgi_params;
                fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;               # include fastcgi.conf;
                include fastcgi.conf;#now 
        fastcgi_read_timeout 300;    

    } 
}

http://yii2.local:8081/page/result.html (working) http://yii2.local:8081/page/result.php (not working)

Please see the nginx setting and tell me where i'm wrong configurartion.

  • 写回答

1条回答

  • douzhangli9563 2016-04-28 21:08
    关注

    You have three different document roots which seems a little strange:

    /var/www/html/yii2project/frontend/web
    /var/www/html/yii2/frontend/web
    /usr/share/nginx/html
    

    The first will be used to locate resource files (.css and .js). The second will be used to locate .html files. The third will be used to locate .php files.

    Assuming that all of your files share a common root, it is usual to place a root directive in the server block and allow all location blocks to inherit the value.

    You should probably change the value of your first root directive. Delete the root directive in the location / block, and change the definition of SCRIPT_FILENAME.

    server {
        ...
        root /var/www/html/yii2/frontend/web;
        ...
        location / { ... }
        location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ { ... }
        location ~ \.php$ {
            ...
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据