我以前从未遇到过 cakePHP 的问题,但该服务器有些奇怪,导致 .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/ ) 得到最终的 URL http://hostname.com/home/username/public_html/listings/app/webroot/ 这显然是不正确的并会触发 404 错误。

托管位于共享托管帐户上,因此限制了我可以对设置执行的操作。我以前从未见过这种情况发生,我认为这是托管方面的问题,但如果有人有一些有用的建议,那么我也可以将它们提交给托管公司。

有帮助吗?

解决方案

您的问题的解决方案可以在本文底部找到 在 cakephp 书中:

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

我也从我的个人资料的 public_html 文件夹中部署了 CakePHP。我必须更改上面提到的 3 个相同的 .htaccess 文件。只需添加 RewriteBase /~username/ 到之后的 .htaccess 文件 RewriteEngine on!

其他提示

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

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

编辑两个.htaccess文件:

/webroot/.htaccess

/。htaccess的

添加以下行: RewriteBase /

下面是整个/webroot/.htaccess文件:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top