在Apache服务器上配置CakePhp有问题。它在我的开发环境中运行良好,现在我正在寻找部署。
url将如下所示:
"http://www.example.com/mysite/"
一个示例控制器操作是:
"http://www.example.com/mysite/users/login"
使用默认的htaccess文件似乎不起作用。
mod_rewrite是根据phpInfo加载的,它正在重写URL,但它将/mysite/视为控制器。这是输出和我的。htaccess文件
Missing Controller
Error: MysiteController could not be found.
Error: Create the class MysiteController below in file: >app/Controller/MysiteController.php
根目录:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
应用程序:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
webroot:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>
我应该改变我的. htaccess文件,还是我的CakePhp配置文件?我已经尝试了一些不同的重写基础,只是设法得到不同的错误。
编辑:服务器正在运行php-cgi,似乎我的所有链接都被写入cgi-bin。例如:
$this->Html->meta('icon');
写入路径"/cgi-bin/cgipack/w3u_mysite/mysite/favicon.ico"有没有关于在哪里或为什么会发生这种情况的想法?
正如我在编辑中所怀疑的,问题与运行cgi php的服务器有关。我不确定问题出在哪里,但CakePhp谷歌集团提供了以下解决方案:
在app/Config/core中。php应用程序有一个注释掉的定义。baseUrl。取消注释并替换为以下内容
Configure::write('App.baseUrl', '/mysite/');
在它上面,有一些评论说删除你应该忽略的. htaccess文件。该网站与. htaccess文件作为其标准值运行良好,不需要重写数据库。唯一的烦恼是$this-
如果有人能洞察这些cgi灾难的原因,请分享。如果我不能使用所有的Html帮助程序,这仍然感觉有点像一个乱七八糟的东西。
您需要将Rewritebase/mysite/
(可能引用“/mysite”或不使用第二个斜杠,您必须尝试)添加到您的。htaccess,因此mod rewrite将考虑该文件夹。
你检查你的webroot/index.php
文件的正确路径吗?作为最后的手段,也许可以过滤掉路线中的“我的网站”?
最后的建议:在重写文件中将mysite/
添加到app
。
我有一些服务器类似的问题。我的解决方案是在所有. htaccess文件中命名绝对路径。
比如:
根目录:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ /mysite/app/webroot/ [L]
RewriteRule (.*) /mysite/app/webroot/$1 [L]
</IfModule>
应用程序:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ /mysite/app/webroot/ [L]
RewriteRule (.*) /mysite/app/webroot/$1 [L]
</IfModule>
webroot:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /mysite/app/webroot/index.php?/$1 [QSA,L]
</IfModule>