我正在尝试在共享主机设置上安装cakePHP。将文件解压缩到〜/ public_html / dev / cake 之类的位置并访问相应的网址(在本例中为 http://hostname/~username/dev/cake/ )后,我收到404错误:
<小时/> 找不到
在此服务器上找不到请求的网址/ usr / home / username / public_html / dev / cake / app / webroot /。
我怀疑其原因是经过仔细检查后,〜/ public_html 的绝对路径实际上并非 / usr / home / username / public_html ,而是 / usr / www / users / username / 。
这是我一直在尝试的(但显然它不起作用): (〜/ public_html / dev / cake / app / webroot / .htaccess)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /usr/www/users/username/dev/cake/app/webroot/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
不幸的是,这似乎没有改变任何东西(404消息保持不变)。想法?
答案 0 :(得分:13)
应该不是
RewriteBase /usr/www/users/username/dev/cake/app/webroot/
是
RewriteBase /~username/dev/cake/
RewriteBase
关注将真实网址映射到虚拟网址,我认为这就是你想要的。
答案 1 :(得分:2)
您正在修改错误的文件。您需要修改的.htaccess文件位于/ dev中,您不应该修改/dev/cake/app/webroot/.htaccess中的文件
答案 2 :(得分:2)
我只想指出我认为模块已加载,因为我看到了代码,但显然它没有启用!
要在SSH(终端)中启用它,请键入以下命令
sudo a2enmod rewrite
下面的命令显示了所有处于活动状态的模块,如果它出现在列表中,那么您已安装它。
apache2ctl -M
确保使用...
重新启动服务器service apache2 restart
PhpCake现在应该开始工作了。
答案 3 :(得分:1)
为什么不将文件解压缩到/usr/www/users/username/
?
答案 4 :(得分:1)
我认为.htaccess正在读取'〜'并认为你正在引用你的主文件夹(这是linux中的一个快捷方式)。
让你的应用程序运行的最快方法是去蛋糕的config / core.php并禁用重写(它告诉你取消注释一些东西并删除一些.htaccess文件)。另一种方法是编辑你的.htaccess并以某种方式告诉它'〜'没有引用主目录。也许一个简单的\将工作。答案 5 :(得分:1)
我正在托管对,我能够让重写规则工作但是,我遇到HTML-&gt;链接的问题,获取页面中所有链接的排序参数。相同的代码在我的本地计算机运行窗口上运行正常,但是对排序或查询参数太多(编辑或更新页面)会导致问题。
答案 6 :(得分:1)
是的,您必须在以下文件中提供DOCUMENT_ROOT路径。请参阅服务器的phpinfo()以获取正确的DOCUMENT_ROOT路径。它应该是var/www/html/
。
.htaccess(应用程序,蛋糕,供应商目录之外)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ ) DOCUMENT_ROOT/app/webroot/ [L]
RewriteRule (.*) DOCUMENT_ROOT/app/webroot/$1 [L]
</IfModule>
/ app 目录中的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ DOCUMENT_ROOT/app/webroot/ [L]
RewriteRule (.*) DOCUMENT_ROOT/app/webroot/$1 [L]
</IfModule>
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ DOCUMENT_ROOT/app/webroot/index.php?url=$1 [QSA,L]
</IfModule>
它对我有用。
答案 7 :(得分:1)
我在官方CakePHP Cockbook中遇到了与'高级安装'类似的问题。几个小时后,我设法让它运转起来。
操作系统:Mac OS X
Cake核心目录: / usr / lib / cake
我的应用程序应用程序目录: / Users / myuser / dev / myapp
我的应用程序webroot目录: / Users / myuser / Sites / myapp
修改 /Users/myuser/Sites/myapp/index.php
if (!defined('ROOT')) {
define('ROOT', DS.'Users'.DS.'myuser'.DS.'dev');
}
if (!defined('APP_DIR')) {
define('APP_DIR', 'myapp');
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib');
}
修改 /Users/myuser/Sites/myapp/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /~myuser/myapp/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
至于 /Users/myuser/dev/myapp/.htaccess - 此配置中不需要此文件,因此我将其删除。这种配置中最棘手的部分是在Apache中启用mod_rewrite。在Mac上编辑 /private/etc/apache2/httpd.conf 似乎毫无意义(对于此任务)。为每个用户创建了附加的Apache配置文件。
修改 /private/etc/apache2/users/myuser.conf
<Directory "/Users/myuser/Sites/">
Options FollowSymLinks
AllowOverride All
</Directory>
默认情况下,AllowOverride设置为None,因此mod_rewrite在此配置中不起作用。
此更改后 http://localhost/~myuser/myapp 正常工作。
PS。 tmp目录的快速权限修复。
sudo chgrp -R www /Users/myuser/dev/myapp/tmp
sudo chmod -R g+w /Users/myuser/dev/myapp/tmp