在子目录中安装cakephp 2.0.0
我发现了一个类似的问题,但没有找到解决方案。基本上,我已经在“localhost/dyod”子目录中安装了一个现有的cakephp应用程序。在没有编辑htaccess文件的情况下,我得到一个错误,告诉我应用程序正在寻找dyod控制器,因此似乎uri不知何故关闭了。当我将rewritebase添加到htaccess文件(/dyod/)时,所有资产的URL都将关闭,并且不包括webroot。此外,它仍在寻找dyod控制器。我的htaccess文件是从中复制的在子目录中安装cakephp 2.0.0,php,macos,apache,cakephp,installation,Php,Macos,Apache,Cakephp,Installation,我发现了一个类似的问题,但没有找到解决方案。基本上,我已经在“localhost/dyod”子目录中安装了一个现有的cakephp应用程序。在没有编辑htaccess文件的情况下,我得到一个错误,告诉我应用程序正在寻找dyod控制器,因此似乎uri不知何故关闭了。当我将rewritebase添加到htaccess文件(/dyod/)时,所有资产的URL都将关闭,并且不包括webroot。此外,它仍在寻找dyod控制器。我的htaccess文件是从中复制的 提前感谢。在.htaccess文件中添加
提前感谢。在.htaccess文件中添加RewriteBase指令: 重写基本/路径/到/蛋糕/应用程序 在您的情况下,这将是:
重写base/path/to/dyod此页面说明如何在不同于“普通”的位置安装CakePHP: 基本上,您只需在
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');
在我的webroot中:
-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');
再加上这个,因为它在我的谷歌搜索的顶端,这些答案没有帮助 CakePHP使用3.htaccess文件,这些文件都需要修改。一个位于CakePHP目录的顶部,一个位于app/中,一个位于app/webroot中。将以下各项添加到其中的每一项: 重写base/path/to/dir/ 在我的机器上,我有以下结构: ~/Sites/site1 ~/sites/site2/admin 每个目录都有一个单独的CakePHP安装 在site1和site2/admin中安装CakePHP。 这些站点的URL为:
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>
site1.htaccess:
重新启动发动机
重写base/~me/site1/
重写规则^$app/webroot/[L]
重写规则(*)app/webroot/$1[L]
site1/app.htaccess:
重新启动发动机
重写base/~me/site1/app/
重写规则^$webroot/[L]
重写规则(.*)webroot/$1[L]
site1/app/webroot.htaccess:
重新启动发动机
重写base/~me/site1/app/webroot/
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
就这样。这三个更改就是您所需要的。如果我使用完整路径/applications/mamp/htdocs/dyod/我在服务器上找不到错误(显然),如果我使用/dyod/就像我在OP中所说的那样,那么所有资产都有错误的地址,并且仍然尝试加载dyod控制器。您的根目录、APP\u DIR、,例如,蛋糕、核心、包含路径?这些值似乎设置正确。你还有其他想法吗?更新了我的路径,例如Daniel Wolf-更改为匹配上面的示例文件夹结构,而不是我的内部结构。谢谢你指出这一点。抱歉,如果它不是本地主机,而是主机,而不是DS'home'.DS'myusername'.DS'public_html'我应该使用什么?例如,这是正确的