我以前从来没有遇到过CakePHP的问题,但是这个服务器有些奇怪,导致.htaccess文件中的重定向行为奇怪。
CakePHP使用.htaccess文件中的mod_rewrite将请求重定向到自己的webroot文件夹。问题是重定向列出了错误的路径并导致404错误。我的CakePHP应用程序存储在listing目录中,它有一个.htaccess文件,如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [R=301,L]
RewriteRule (.*) app/webroot/$1 [R=301,L]
</IfModule>
(*请注意,R = 301导致外部重定向,因此我们可以看到我们的结果发生了什么。它应该省略此标志并在内部进行重定向,对最终用户透明)
这应该将来自http://hostname.com/~username/listings/
的任何请求重定向到http://hostname.com/~username/listings/app/webroot/
但是,不是简单地将“app/webroot/
”添加到结尾,而是添加完整的服务器路径(/home/username/public_html/listings/app/webroot/
),导致最终的URL http://hostname.com/home/username/public_html/listings/app/webroot/
,这显然是不正确的并触发404错误。
托管位于共享主机帐户上,因此限制了我可以对设置执行的操作。我以前从未见过这种情况,而且我认为托管方面的问题是错误的,但如果有人提出了一些有用的建议,那么我也可以把它们放到托管公司。
答案 0 :(得分:3)
你的问题的解决方案可以在cakephp书中page的底部找到:
对于许多托管服务(GoDaddy,1and1),您的Web服务器实际上是从已使用mod_rewrite的用户目录提供的。如果要将CakePHP安装到用户目录(http://example.com/~username/cakephp/)或任何其他已经使用mod_rewrite的URL结构中,则需要将RewriteBase语句添加到CakePHP使用的.htaccess文件中(/.htaccess,/ app / .htaccess,/ app / webroot / .htaccess)。
我也从我的个人资料的public_html文件夹中部署了CakePHP。我不得不改变3上面提到的相同的.htaccess文件。只需将RewriteBase /~username/
添加到RewriteEngine on
之后的.htaccess文件中!
答案 1 :(得分:0)
尝试从主文件中删除.htaccess ...它对我有用
答案 2 :(得分:0)
这很简单(使用uolhost共享主机):
编辑.htaccess文件:
/webroot/.htaccess
/。htaccess的
添加以下行: RewriteBase /
这是整个/webroot/.htaccess文件:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]