2016-02-22 2 views
1

Я пытаюсь использовать Nginx, чтобы переписать URL-адрес на более удобный для пользователя. Удаление index.php? R = является успешным, но проблема в том, что после того, как я попытался посетить другую страницу, он говорит: 404 Not Found. Я уже добавляю в config/web urlmanager для довольно url, но его не работает. Может кто-то помочь мне с этим?yii2 using nginx для rewrite url

Я попытаюсь опубликовать код.

это nginx.conf

server { 
     listen  88; 
     server_name localhost; 


     location/{ 
      root html; 
      index index.php index.html index.htm; 
      rewrite ^(.*[^/])$ $1/ permanent; 
      try_files $uri $uri/ /index.php?r=$args; 
     } 

     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 

     location ~ .php$ { 
      include  fastcgi_params; 
      root   html; 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 
      include fastcgi.conf; 
     } 
    } 

и это менеджер URL.

'urlManager' => [ 
      'class' => 'yii\web\UrlManager', 
      // Disable index.php 
      'showScriptName' => false, 
      // Disable r= routes 
      'enablePrettyUrl' => true, 
      'rules' => array(
        '<controller:\w+>/<id:\d+>' => '<controller>/view', 
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
      ), 
     ], 

Я попробовал это на своем локальном хосте в первую очередь.

Thank you.

+0

Я думаю, что вы должны дать корневой путь как корень '/ вар/WWW/HTML/юй-приложение/веб,' вместо 'HTML ; ' –

+0

@Selvakumar, когда я изменяю корневой html, как вы предлагаете, с' html' на '/ html/yii-app/web', это ошибка, которую я получаю в error.log ..' 2016/02/23 10: 13:53 [error] 3116 # 1344: * 2 "C: /html/MAPUser/web/MAPUser/web/index.php" не найден (3: система не может найти указанный путь) 'i поместите мой nginx в C: – haruya

ответ

1

Nginx конфигурации для yii2 Basic:

server { 
    server_name localhost; 
    root /path/to/localhost/yii2basic/web; 
    index index.php; 

    location/{ 
     try_files $uri $uri/ /index.php?$args; 
    } 

    location ~ \.php$ { 
     try_files $uri =404; 
     include fastcgi.conf; 
    } 
} 

My fastcgi code. - обычно находится в папке Nginx конфигурации.

Yii конфигурационный файл:

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'rules' => [ 
     '/' => 'site/index', 
     '<controller:\w+/?>' => '<controller>/index', 
     '<controller:\w+>/<id:\d+>' => '<controller>/view', 
     '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
    ], 

],