2009-08-26 25 views
19

我试图让CakePHP应用程序工作。对于这一点,我已经建立了一个全新的Debian安装,更新配置,并把在/ var/WWW,它具有以下内容的一切:.htaccess for cakephp

app 
cake 
.htaccess 
index.php 
vendors 

.htaccess文件包含以下内容:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ /webroot/ [L] 
    RewriteRule (.*) /webroot/$1 [L] 
</IfModule> 

如果我访问我的虚拟主机(http://myhost/),我看到正确的页面。但即使是JavaScript的装载src="/js/validate.js"失败(它位于内/var/www/app/webroot/js/validate.js):

[Wed Aug 26 15:45:12 2009] [error] [client 10.7.10.52] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3063): [client 10.7.10.52] r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] mod_deflate.c(632): [client 10.7.10.52] Zlib: Compressed 649 to 405 : URL /webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 

因此我问题:什么是CakePHP中所需的正确的.htaccess?

很多,非常感谢!

+1

你在Apache配置中的站点根目录下有哪些目录?它应该是/ var/www/app/webroot - 可以解决你的问题。 – inkedmn 2009-08-26 13:48:55

+0

@inkedmn:谢谢你,它会是/ var/www - 但是错误是因为我刚刚发现了一个.htaccess,而不是3。谢谢! – MrG 2009-08-26 13:59:54

回答

55

答案是有3个不同的.htaccess文件:

/var/www/app/webroot/.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

/var/www/app/.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

/var/www/.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
</IfModule> 

这是我的错,一切都列在 CakePHP site。谢谢大家!

+0

找到我的日志文件并使用上面列出的错误搜索后,我发现了这个!非常感谢! – DirtyBirdNJ 2011-12-08 18:49:11

+0

伟大的答案.........它为我工作 – 2013-12-09 10:59:45

+0

谢谢你...帮了我很多:) – Alex 2014-05-13 15:13:46

2

正确的.htaccess是默认:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

您必须添加这在 “/ etc /启用站点-的Apache2//默认”:如果部分已经存在变化

<Directory /var/www> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
</Directory> 

AllowOverride None to AllowOverride All

0

从主文件中删除.htaccess可能会解决此问题。它的工作对我来说(不需要从根目录中删除)

0

如果您的提供商允许你可以把所有在httpd.conf文件如下

<Directory /var/www> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
    <IfModule mod_rewrite.c> 
     RewriteEngine on 
     RewriteRule ^$ webroot/ [L] 
     RewriteRule (.*) webroot/$1 [L] 
    </IfModule> 
</Directory> 

等了其他目录...