Cakephp重定向调用根文件夹
好的,我有一个名为Cakephp重定向调用根文件夹,php,apache,.htaccess,cakephp,Php,Apache,.htaccess,Cakephp,好的,我有一个名为MyProject 这个项目包含蛋糕 现在我有一个名为UsersController的控制器,在本例中,我希望访问名为login的操作 因此,当我访问以下站点时:localhost/MyProject/cake/users/login 我得到以下错误: '/MyProject/cake/app/webroot/index.php/MyProject/cake/users/login' 据我所知,它进入webroot,然后再次尝试转到我文件夹的根目录以找到正确的url。但我不知
MyProject
这个项目包含蛋糕
现在我有一个名为UsersController的控制器,在本例中,我希望访问名为login的操作
因此,当我访问以下站点时:localhost/MyProject/cake/users/login
我得到以下错误:
'/MyProject/cake/app/webroot/index.php/MyProject/cake/users/login'
据我所知,它进入webroot,然后再次尝试转到我文件夹的根目录以找到正确的url。但我不知道它为什么这么做
以下是相关文件:
蛋糕夹
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
RewriteRule ^/admin$ index.php/dashboards [QSA]
</IfModule>
重新启动发动机
重写规则^$app/webroot/[L]
重写规则(*)app/webroot/$1[L]
index.php
<?php
/**
* Requests collector.
*
* This file collects requests if:
* - no mod_rewrite is available or .htaccess files are not supported
* - requires App.baseUrl to be uncommented in app/Config/core.php
* - app/webroot is not set as a document root.
*
* PHP 5
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @since CakePHP(tm) v 0.2.9
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
/**
* Get Cake's root directory
*/
define('APP_DIR', 'app');
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__));
define('WEBROOT_DIR', 'webroot');
define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS);
/**
* This only needs to be changed if the "cake" directory is located
* outside of the distributed structure.
* Full path to the directory containing "cake". Do not add trailing directory separator
*/
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
}
require APP_DIR . DS . WEBROOT_DIR . DS . 'index.php';
<?php
/**
* Index
*
* The Front Controller for handling every request
*
* PHP 5
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package app.webroot
* @since CakePHP(tm) v 0.2.9
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
/**
* Use the DS to separate the directories in other defines
*/
if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
/**
* These defines should only be edited if you have cake installed in
* a directory layout other than the way it is distributed.
* When using custom settings be sure to use the DS and do not add a trailing DS.
*/
/**
* The full path to the directory which holds "app", WITHOUT a trailing DS.
*
*/
if (!defined('ROOT')) {
define('ROOT', dirname(dirname(dirname(__FILE__))));
// define('ROOT', DS . 'home' . DS . 'me');
}
/**
* The actual directory name for the "app".
*
*/
if (!defined('APP_DIR')) {
define('APP_DIR', basename(dirname(dirname(__FILE__))));
// define ('APP_DIR', 'bloglic-2013');
}
/**
* The absolute path to the "cake" directory, WITHOUT a trailing DS.
*
* Un-comment this line to specify a fixed path to CakePHP.
* This should point at the directory containing `Cake`.
*
* For ease of development CakePHP uses PHP's include_path. If you
* cannot modify your include_path set this value.
*
* Leaving this constant undefined will result in it being defined in Cake/bootstrap.php
*/
//define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
/**
* Editing below this line should NOT be necessary.
* Change at your own risk.
*
*/
if (!defined('WEBROOT_DIR')) {
define('WEBROOT_DIR', basename(dirname(__FILE__)));
}
if (!defined('WWW_ROOT')) {
define('WWW_ROOT', dirname(__FILE__) . DS);
}
// for built-in server
if (php_sapi_name() == 'cli-server') {
$_SERVER['PHP_SELF'] = '/' . basename(__FILE__);
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
if (function_exists('ini_set')) {
ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
}
if (!include ('Cake' . DS . 'bootstrap.php')) {
$failed = true;
}
} else {
if (!include (CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php')) {
$failed = true;
}
}
if (!empty($failed)) {
trigger_error("CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your " . DS . "cake core directory and your " . DS . "vendors root directory.", E_USER_ERROR);
}
App::uses('Dispatcher', 'Routing');
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(new CakeRequest(), new CakeResponse());
看来您并没有真正理解重写规则是如何工作的
当您尝试访问URLhttp://localhost/MyProject/cake/users/login
重写规则
<IfModule mod_rewrite.c>
...
RewriteRule ^(.*)$ index.php [L,QSA]
...
</IfModule>
在“后台”中,Web服务器执行以下URL:
http://localhost/users/login
http://localhost/index.php/users/login
并且正在呼叫相应的路线
PS:您发布的“错误消息”并非真正的错误消息,我假设错误就是我试图在此处向您解释的错误。是否启用了mod_rewrite?那么我可以如何解决此问题STry打开URL并检查它是否按预期工作。在此服务器上找不到请求的URL/users/login。顺便说一句,如果我转到localhost/MyProject/cake/index.php/users/login,则根本没有问题
http://localhost/users/login
http://localhost/index.php/users/login