2010-03-30 95 views
2

我以前从来没有遇到CakePHP的问题,但是对于此服务器有些奇怪,并导致.htaccess文件中的重定向行为异常。为什么我的.htaccess文件重定向到完整的服务器路径而不是相对路径?

CakePHP在.htaccess文件中使用mod_rewrite将请求重定向到它自己的webroot文件夹。问题是重定向列出了错误的路径并导致了404错误。我的CakePHP的应用程序,它存储在列表目录中,有一个.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/),导致最终的网址http://hostname.com/home/username/public_html/listings/app/webroot/,其中我显然不正确,并触发404错误。

托管在一个共享的托管帐户,所以这限制了我可以做的设置。我从来没有见过这种情况发生过,而且我认为这是从主机端事情出错,但如果有人有一些有用的建议,那么我可以把它们放到托管公司。

+0

我可以想象这将是与笼的主目录,这是核心的httpd的设置做。conf,因为我很确定〜用户名格式是符号链接 – 2010-03-30 08:09:15

回答

3

你的问题的解决方案可以实现这个page在CakePHP的书的底部找到:

对于许多托管服务(GoDaddy的,的1and1),您的Web服务器实际上是被从用户目录服务已经使用mod_rewrite。如果要将CakePHP安装到用户目录(http://example.com/~username/cakephp/)或任何其他已使用mod_rewrite的URL结构中,则需要将RewriteBase语句添加到CakePHP使用的.htaccess文件(/.htaccess,/app/.htaccess,/应用程序/根目录/ htaccess的)。

我已经从配置文件的public_html文件夹中部署了CakePHP。我不得不改变3上面提到的相同的.htaccess文件。只需在RewriteEngine on之后将RewriteBase /~username/添加到.htaccess文件即可!

0

尝试从主文件中删除的.htaccess ...它为我

+2

这是摆脱这个问题的一种非常具有破坏性的方式。 – Brilliand 2011-10-07 19:12:23

0

这是很简单的(使用uolhost共享主机):

编辑都.htaccess文件:

/Webroot公司/的.htaccess

/.htaccess

添加以下行: RewriteBase/

这里是整个/webroot/.htaccess文件:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

相关问题