1

我在这里发现了类似的问题,但没有找到解决方案。基本上我已经在子目录'localhost/dyod'中安装了一个现有的 cakephp 应用程序。在不编辑 htaccess 文件的情况下,我收到一条错误消息,告诉我该应用程序正在寻找 dyod 控制器,因此似乎 uri 以某种方式关闭。当我向 htaccess 文件 (/dyod/) 添加 rewritebase 时,所有资产的 url 都关闭并且不包括 webroot。此外,它仍在寻找 dyod 控制器。我的 htaccess 文件是从这里复制的。

提前致谢。

4

3 回答 3

2

添加到这一点,因为它在我的谷歌搜索的顶部,这些答案没有帮助。

CakePHP 使用了 3 个都需要修改的 .htaccess 文件。一个在顶级 CakePHP 目录中,一个在 app/ 中,一个在 app/webroot 中。将以下内容添加到其中的每一项中:

RewriteBase /path/to/dir/

在我的机器上,我有以下结构: ~/Sites/site1 ~/sites/site2/admin

每个目录都有一个单独的 CakePHP 安装。

在 site1 和 site2/admin 中安装 CakePHP。这些网站的网址是:

http://localhost/~me/site1
http://localhost/~me/site2/admin

我一直收到此错误:在此服务器上找不到请求的 URL /home/me/Sites/site1/app/webroot/index.php。

我修改了 3 个 .htaccess 文件来获得这些:

site1 .htaccess:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase /~me/site1/
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

site1/app .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /~me/site1/app/
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

site1/app/webroot .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /~me/site1/app/webroot/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

而已。这三个变化就是你所需要的。

于 2014-07-22T15:51:26.820 回答
0

在您的 .htaccess 文件中添加 RewriteBase 指令:

RewriteBase /path/to/cake/app

在您的情况下,这将是:

RewriteBase /path/to/dyod

于 2012-08-14T17:08:32.230 回答
0

本页解释了如何在不同于“正常”位置的地方安装 CakePHP:

http://book.cakephp.org/2.0/en/installation/advanced-installation.html

基本上,您只需更改webroot/index.php文件中的 3 个值。您不必编辑任何 .htaccess 文件。我现在在每个站点的子目录中安装 CakePHP,而且我从来没有接触过 .htaccess 文件。只需更改其中的值webroot/index.php,您就可以开始了。

示例 - 我的目录结构:

-cakephp
    -cakephp_2_2
    -cakephp_1_3
    -cakephp_2_1_beta
    - ...etc
-public_html
    -mysite1
        -Config
        -Console
        -Controller
        -Lib
        - ...etc
        -View
        -webroot
    -mysite2
        -Config
        -Console
        -Controller
        -Lib
        - ...etc
        -View
        -webroot

在我的网络根目录中:

if (!defined('ROOT')) {
define('ROOT', DS.'home'.DS.'myusername'.DS.'public_html');
}


if (!defined('APP_DIR')) {
define('APP_DIR', 'mysite1');
}


define('CAKE_CORE_INCLUDE_PATH', DS.'home'.DS.'myusername'.DS.'cakephp'.DS.'cakephp_2_2'.DS.'lib');
于 2012-08-14T17:33:44.683 回答