【问题标题】:The correct way to set CakePHP base URL设置 CakePHP 基本 URL 的正确方法
【发布时间】:2014-08-12 13:54:29
【问题描述】:

我的 CakePHP 站点位于 http://localhost/somepath/。我应该如何设置 CakePHP 以便一切正常?

我尝试添加添加行

RewriteBase  /somepath/

.htaccessapp/webroot/.htaccess。没有其他方法可以使 URL 重写工作(否则,我在访问该站点时总是得到 404)。此解决方案有效,但从 CLI 使用时会中断路由。例如,当我使用

Router::url(array('controller' => 'posts', 'action' => 'view', 3), true);

在 Shell 中,我得到 http://localhost/posts/view/3 而不是 http://localhost/somepath/posts/view/3

所以除了更改.htaccess之外,我还尝试在core.php中设置App.fullBaseUrl,如下所示:

Configure::write('App.fullBaseUrl', 'http://localhost/somepath');

这样,我在 Shells 中获得了正确的 URL,但在网页上却没有——例如使用与上面相同的Router::url 调用,我得到http://localhost/somepath/somepath/posts/view/3

【问题讨论】:

  • 在这里查看我的答案:installing cakephp 2.0.0 in a subdirectory
  • 谢谢@Dave,但是由于我从 Apache 而不是从带有 unchanged .htaccess 的 Cake 收到错误 (404),我想有一个问题URL 重写,而不是 Cake 配置。
  • 是的。正如我所说,如果我设置RewriteBase,它就可以工作。

标签: php url cakephp mod-rewrite cakephp-2.5


【解决方案1】:

/somepath/ 应该在 url 中可见还是尝试在 url 中隐藏此子文件夹?

您是否尝试在所有 3 个 htaccess 文件中添加 RewriteBase /somepath/

/yourcakedir/.htaccess
/yourcakedir/app/.htaccess
/yourcakedir/app/webroot/.htaccess

然后在

/yourcakedir/app/config/bootstrap.php

添加

Configure::write('App.base','');

你也可以加

Configure::write('App.base','/');

但这在某些情况下会出现双斜杠,因为您的 htaccess RewriteBase 已经以斜杠结尾。

如果您设置了App.base,则您的core.php 中不应需要此行:

Configure::write('App.fullBaseUrl', 'http://localhost/somepath');

【讨论】:

  • core.php 文件说您应该使用 .htaccess 或 App.baseUrl/fulLBaseUrl,而不是两者。
猜你喜欢
  • 2013-02-28
  • 2017-01-25
  • 1970-01-01
  • 2019-05-11
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多