我发现了类似的问题here,但未找到解决方案。基本上我已经在子目录'localhost / dyod'中安装了现有的cakephp应用程序。没有编辑htaccess文件,我得到一个错误告诉我该应用程序正在寻找dyod控制器,所以看起来uri以某种方式关闭。当我向htaccess文件(/ dyod /)添加重写基础时,所有资产的网址都关闭,不包括webroot。此外,它仍在寻找一个dyod控制器。我的htaccess文件是从here复制的。
提前感谢。
答案 0 :(得分:2)
除此之外,因为它位于谷歌搜索的顶部,这些答案并没有帮助。
CakePHP使用3个.htaccess文件,这些文件都需要修改。一个在顶级CakePHP目录中,一个在app /和一个在app / webroot中。将以下内容添加到以下每个中:
RewriteBase / path / to / dir /
在我的机器上,我有以下结构: 〜/站点/ SITE1 〜/位点/站点2 /管理
每个目录都有一个单独的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>
那就是它。这三个变化都是你需要的。
答案 1 :(得分:0)
在.htaccess文件中添加RewriteBase指令:
RewriteBase / path / to / cake / app
在你的情况下,这将是:
RewriteBase / path / to / dyod
答案 2 :(得分: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
在我的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');