Yii2 控制器Site下actionGetApiData()解析出错

新手提问 · goodman · 于 6年前 发布 · 3835 次阅读

我使用host/site/index能访问到 actionIndex()控制器! 但控制器名称有多段后,使用host/site/get-api-data 访问actionGetApiData()却直接导向到host/site/error去了!

.htaccess 配置如下

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|images|css|js|scripts|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

本文由 goodman 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。 本文由 goodman 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 7 条回复 Yii2
echo#16年前 0 个赞

有配置 urlManager 吗?

goodman#26年前 0 个赞

@echo #1楼

				'urlManager' => [ 
						'enablePrettyUrl' => true,
						'showScriptName' => false,
						'rules' => [ 
								'/' => 'site/index' 
						] 
				],

配置在common/fonfig/main.php

goodman#36年前 0 个赞

在本地能行,放到服务器就不行了:

➜  advanced git:(master) curl api.geolbs.com/site/get-api-data
string(14) ""get_api_data""
"get_api_data"%                                                                                                                              ➜  advanced git:(master) curl apilbs.kanjiebao.com/site/get-api-data
string(230) "{"enableCsrfValidation":false,"csrfParam":"_csrf","csrfCookie":{"httpOnly":true},"enableCsrfCookie":true,"enableCookieValidation":false,"cookieValidationKey":"oMSrL22MTtK51NEMFByqQczYcPgY9_Bw","methodParam":"_method","parsers":[]}"
{"enableCsrfValidation":false,"csrfParam":"_csrf","csrfCookie":{"httpOnly":true},"enableCsrfCookie":true,"enableCookieValidation":false,"cookieValidationKey":"oMSrL22MTtK51NEMFByqQczYcPgY9_Bw","methodParam":"_method","parsers":[]}%                                                   ➜  advanced git:(master) 
goodman#46年前 0 个赞

这是这个控制器的代码!

<?php
namespace api\controllers;

use Yii;
use api\controllers\BaseController;

class SiteController extends BaseController
{

	public function actionIndex()
	{
		return json_encode ( [ 
				"code" => 0,
				"msg" => "success!",
				"data" => "" 
		] );
	
	}

	public function actionError()
	{
		return json_encode ( Yii::$app->request );
	
	}

	public function actionGetApiData()
	{
		return json_encode ( 'get_api_data' );
	
	}

}
echo#56年前 0 个赞

@goodman #4楼 那肯定就是你环境有问题

看一下这个 http://www.getyii.com/doc-2.0/guide/start-installation.html#apache

goodman#66年前 1 个赞

@echo #5楼 问题解决了,但却不是apache配置的问题,而是我服务器上的api端的config/main-local.php下urlManager配置为

'enableStrictParsing' => true,

把true改为false就好了!!!

goodman#76年前 0 个赞

@echo #5楼 问题解决了,但却不是apache配置的问题,而是我服务器上的api端的config/main-local.php下urlManager配置为

'enableStrictParsing' => true,

把true改为false就好了!!!

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册