ERROR 404: No se puede resolver la solicitud "carpeta/acción"

[indent][/indent]Hola, soy nuevo en estos lares, y pues quisiera saber si alguno de ustedes me podría ayudar en este caso. Trataré de explicar para ponerlos en contexto:

[indent][/indent]Tengo una app, un sistema de ventas en yii y pues todo normal, el problema es que al momento de abrir un enlace de la carpeta donde está el contenido, este me arroja un mensaje de error como si no "reconociese la acción" o la carpeta no existiese:

[i]

Error 404

Unable to resolve the request "hogardecoracion/index".[/i]

[indent][/indent]Lo curioso del caso es que en mi localhost, tengo la misma configuración, con los mismos archivos y sub-carpetas, y la misma url (localhost/yii/carpeta/subcarpeta/accion | hosting/yii/carpeta/subcarpeta/accion) y todo va bien, normal. He pensado que a lo mejor pudiese ser alguna de estas opciones lo que cause el inconveniente:

  1. Configuración de la base de datos del servidor o hosting, como por ejemplo, los datos de la conexión (protected/config/main.php):

     'db'=>array(
    
    
     	'connectionString' => 'mysql:host=[color="#FF0000"]***[/color];dbname=[color="#FF0000"]***[/color]',
    
    
     	'emulatePrepare' => true,
    
    
     	'username' => '[color="#FF0000"]***[/color]',
    
    
     	'password' => '[color="#FF0000"]***[/color]',
    
    
     	'charset' => 'utf8',
    
    
     ),
    
  2. La "redacción", sintaxis, del código del archivo tanto Controller, como Modell (protected/controllers/NombreControladorController.php o protected/models/NombreDelModelo.php):

#protected–>controllers–>NombreControladorController.php


<?php


class HogardecoracionController extends Controller

{

	/**

	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning

	 * using two-column layout. See 'protected/views/layouts/column2.php'.

	 */

	public $layout='//layouts/column2';


	/**

	 * @return array action filters

	 */

	public function filters()

	{

		return array(

			'accessControl', // perform access control for CRUD operations

			'postOnly + delete', // we only allow deletion via POST request

		);

	}


	/**

	 * Specifies the access control rules.

	 * This method is used by the 'accessControl' filter.

	 * @return array access control rules

	 */

	public function accessRules()

	{

		return array(

			array('allow',  // allow all users to perform 'index' and 'view' actions

				'actions'=>array('index','view'),

				'users'=>array('*'),

			),

			array('allow', // allow authenticated user to perform 'create' and 'update' actions

				'actions'=>array('create','update'),

				'users'=>array('@'),

			),

			array('allow', // allow admin user to perform 'admin' and 'delete' actions

				'actions'=>array('admin','delete'),

				'users'=>array('admin'),

			),

			array('deny',  // deny all users

				'users'=>array('*'),

			),

		);

	}


	/**

	 * Displays a particular model.

	 * @param integer $id the ID of the model to be displayed

	 */

	public function actionView($id)

	{

		$this->render('view',array(

			'model'=>$this->loadModel($id),

		));

	}


	/**

	 * Creates a new model.

	 * If creation is successful, the browser will be redirected to the 'view' page.

	 */

	public function actionCreate()

	{

		$model=new HogarDecoracion;


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['HogarDecoracion']))

		{

			$model->attributes=$_POST['HogarDecoracion'];

			if($model->save())

			//descomentar llave abierta para verificar que los valores en la bd no se repitan

			{

					Yii::app()->user->setFlash("success","Hogar y decoración agregado correctamente.");

					$this->redirect(array('create')); #$this->redirect(array('view','id'=>$model->id));

			//descomentar llave cerrada para verificar que los valores en la bd no se repitan

			}

			//descomentar else para verificar que los valores en la bd no se repitan

			else

				//descomentar yii para verificar que los valores en la bd no se repitan

				Yii::app()->user->setFlash("error","Hogar y decoración no se agregó correctamente.");

		}


		$this->render('create',array('model'=>$model));


	}


	/**

	 * Updates a particular model.

	 * If update is successful, the browser will be redirected to the 'view' page.

	 * @param integer $id the ID of the model to be updated

	 */

	public function actionUpdate($id)

	{

		$model=$this->loadModel($id);


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['HogarDecoracion']))

		{

			$model->attributes=$_POST['HogarDecoracion'];

			if($model->save())

			{

				Yii::app()->user->setFlash("success","Hogar y decoración actualizado correctamente.");

				$this->redirect(array('view','id'=>$model->ID));

			}

			else 

				Yii::app()->user->setFlash("error","Hogar y decoración no se actualizó correctamente.");

		}

		$this->render('update',array(

			'model'=>$model,

		));

	}


	/**

	 * Deletes a particular model.

	 * If deletion is successful, the browser will be redirected to the 'admin' page.

	 * @param integer $id the ID of the model to be deleted

	 */

	public function actionDelete($id)

	{

		$this->loadModel($id)->delete();


		// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser

		if(!isset($_GET['ajax']))

			Yii::app()->user->setFlash("success","Hogar y decoración eliminado correctamente.");

			$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('index'));

	}

	/**

	 * Lists all models.

	 */

	public function actionIndex()

	{


		if(isset($_GET["excel"]))

			{

			$model=HogarDecoracion::model()->findAll();

			$content=$this->renderPartial("excel",array("model"=>$model),true);

			Yii::app()->request->sendFile("HogarDecoracion.xls",$content);

						}


			if(isset($_GET["word"]))

			{

			$model=HogarDecoracion::model()->findAll();

			$content=$this->renderPartial("word",array("model"=>$model),true);

			Yii::app()->request->sendFile("HogarDecoracion.doc",$content);

						}


			if(isset($_GET["pdf"]))

			{

			$model=HogarDecoracion::model()->findAll();

			$content=$this->renderPartial("pdf",array("model"=>$model),true);

			Yii::app()->request->sendFile("HogarDecoracion.pdf",$content);

						}


			if(isset($_GET["ppt"]))

			{

			$model=HogarDecoracion::model()->findAll();

			$content=$this->renderPartial("ppt",array("model"=>$model),true);

			Yii::app()->request->sendFile("HogarDecoracion.ppt",$content);

						}


			$dataProvider=new CActiveDataProvider('HogarDecoracion');

			$this->render('index',array(

			'dataProvider'=>$dataProvider,

		));

	}


	/**

	 * Manages all models.

	 */

	public function actionAdmin()

	{

		$model=new HogarDecoracion('search');

		$model->unsetAttributes();  // clear any default values

		if(isset($_GET['HogarDecoracion']))

			$model->attributes=$_GET['HogarDecoracion'];


		$this->render('admin',array(

			'model'=>$model,

		));

	}


	/**

	 * Returns the data model based on the primary key given in the GET variable.

	 * If the data model is not found, an HTTP exception will be raised.

	 * @param integer $id the ID of the model to be loaded

	 * @return Tecnología the loaded model

	 * @throws CHttpException

	 */

	public function loadModel($id)

	{

		$model=HogarDecoracion::model()->findByPk($id);

		if($model===null)

			throw new CHttpException(404,'La página solicitada no existe.');

		return $model;

	}


	/**

	 * Performs the AJAX validation.

	 * @param Tecnología $model the model to be validated

	 */

	protected function performAjaxValidation($model)

	{

		if(isset($_POST['ajax']) && $_POST['ajax']==='hogardecoracion-form')

		{

			echo CActiveForm::validate($model);

			Yii::app()->end();

		}

	}

}

#protected–>models–>NombreDelModelo.php


<?php


/**

 * This is the model class for table "hogar_decoracion".

 *

 * The followings are the available columns in table 'hogar_decoracion':

 * @property integer $ID

 * @property string $title

 * @property string $description

 * @property string $date

 * @property integer $quantity

 * @property integer $price

 * @property string $location

 * @property string $data

 * @property string $image

 */

class HogarDecoracion extends CActiveRecord

{

	/**

	 * Returns the static model of the specified AR class.

	 * @param string $className active record class name.

	 * @return HogarDecoracion the static model class

	 */

	public static function model($className=__CLASS__)

	{

		return parent::model($className);

	}


	/**

	 * @return string the associated database table name

	 */

	public function tableName()

	{

		return 'hogar_decoracion';

	}


	/**

	 * @return array validation rules for model attributes.

	 */

	public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('title, description, date, quantity, price, location, data, image', 'required'),

			array('quantity, price, image', 'length', 'max'=>128),

			// The following rule is used by search().

			// Please remove those attributes that should not be searched.

			array('ID, description, date, price, location', 'safe', 'on'=>'search'),

		);

	}


	/**

	 * @return array relational rules.

	 */

	public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

	public function attributeLabels()

	{

		return array(

			'ID' => 'ID',

			'title' => 'Title',

			'description' => 'Description',

			'date' => 'Date',

			'quantity' => 'Quantity',

			'price' => 'Price',

			'location' => 'Location',

			'data' => 'Data',

			'image' => 'Image',

		);

	}


	/**

	 * Retrieves a list of models based on the current search/filter conditions.

	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.

	 */

	public function search()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('ID',$this->ID);

		$criteria->compare('title',$this->title,true);

		$criteria->compare('description',$this->description,true);

		$criteria->compare('date',$this->date,true);

		$criteria->compare('quantity',$this->quantity);

		$criteria->compare('price',$this->price);

		$criteria->compare('location',$this->location,true);

		$criteria->compare('data',$this->data,true);

		$criteria->compare('image',$this->image,true);


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}

}

[indent][/indent]Recuerdo que en mi localhost, los mismos archivos funcionaban perfectamente, y en mi hosting, no.

Solo unos cuantos archivos de las subcarpetas me arrojan ese error de No se puede resolver la solicitud, los otros archivos, si me los muestra a la perfección, la carpeta/acción, tal como en mi localhost. Mi hosting pago es cPanel

[indent][/indent]Muchas gracias a todos por su colaboración. Atento a sus respuestas y sugerencias…

NOTA: Los datos personales o “sensibles” fueron tapados o censurados en este post, mediante asteriscos (’[color="#FF0000"]***[/color]’).

[color="#0000FF"]imgur[.]com/a/gSl6B[/color]

Buenas amigo

Hablare con mi corta experiencia primero, normalmente cuando da problemas de direccionamiento, cuando lo subes a un hosting es debido a que estos trabajan en Gnu/linux el cual es CASE SENSITIVE lo que ocasiona que si tienes un modelo llamado "NombreDelModelo.php" pero lo invocas o utilizas en algun controller como "nombredelmodelo.php" este dara problemas ya que entiende que no estas llamando al mismo archivo; En Windows normalmente esto tiene poco o ninguna relevancia funcionando incluso si se llama "nombredelmodelo.php".

Lo que tienes que hacer es mirar con que nombre estas utilizandolo y como se llaman realmente.

Ese puede ser una lo otro que se me ocurre es que no tengas bien definido el urlManager del archivo config

Asi lo tengo yo y me va bien.

Archivo "main.php de la carpeta config"




'urlManager'=>array(

			'urlFormat'=>'path',

			'showScriptName'=>false,

			'urlSuffix'=>'.html',

			'rules'=>array(

				'<controller:\w+>/<id:\d+>'=>'<controller>/view',

				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

			),

		),




Espero que te pueda ser de utilidad.