0

I search for this get less infomesion while I doing

  • my config (rest.php)

    <?php
    $params = require(__DIR__ . '/params.php');
    $config = [
        'id' => 'rest-api',
        'basePath' => dirname(__DIR__),
        'language' => 'zh-CN',
        'controllerNamespace' => 'rest\controllers',
        'bootstrap' => ['log'],
        'modules' => [
           'v1' => [
              'class' => 'rest\versions\v1\Module',
        ],
    ],
    'components' => [
    
       'errorHandler' => [
           'errorAction' => 'site/index',
       ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                [
                    'class' => 'yii\rest\UrlRule',
                    'controller' => [
                        'v1/product',
                    ],
                ]
            ],
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => require(__DIR__ . '/db.php'),
        'request' => [
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ]
        ],
    ],
    'params' => $params,
     ];
     return $config;
    
  • my Module.php

     <?php
     namespace rest\versions\v1;
    
     use Yii;
     use yii\base\Module;
     class Module extends Module
     {
      public $controllerNamespace = 'rest\versions\v1\controllers';
    
      public function init()
      {
        parent::init();
      }
     }
    
  • my .htaccess file,it's code like this.

      Options +FollowSymLinks
       IndexIgnore */*
    
       RewriteEngine on
    
       # if a directory or a file exists, use it directly
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
    
       # otherwise forward it to index.php
       RewriteRule . index.php
    

    MY PRODUCT CONTROLLER

      <?php
      namespace rest\versions\v1\controllers;
    
      use Yii;
      use yii\rest\ActiveController;
    
      class ProductController extends ActiveController
      {
         public $modelClass = 'rest\versions\v1\models\Product';
    
         public function actionIndex()
         {
             return 'haha';
         }
    
      }
    

I still get the 404

http://rest.mcolor.com/v1/products

I got the info

         404 Not Found

         nginx/1.8.1

plz help me.

1 Answers1

0

It looks like you are using .htaccess file for rewrites, but at your server is installed nginx web server(you can see that at 404 response body.)

So you can use some example of nginx config from tutorial and change domains, path, etc:

server {
charset utf-8;
client_max_body_size 128M;

listen 80; ## listen for ipv4
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6

server_name mysite.local;
root        /path/to/basic/web;
index       index.php;

access_log  /path/to/basic/log/access.log;
error_log   /path/to/basic/log/error.log;

location / {
    # Redirect everything that isn't a real file to index.php
    try_files $uri $uri/ /index.php?$args;
}

# uncomment to avoid processing of calls to non-existing static files by Yii
#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
#    try_files $uri =404;
#}
#error_page 404 /404.html;

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    fastcgi_pass   127.0.0.1:9000;
    #fastcgi_pass unix:/var/run/php5-fpm.sock;
    try_files $uri =404;
}

location ~ /\.(ht|svn|git) {
    deny all;
}

}

s_mart
  • 735
  • 7
  • 21