【问题标题】:How to make the routes working with CakePHP in a subdirectory如何使路由在子目录中使用 CakePHP
【发布时间】:2012-03-20 08:14:29
【问题描述】:

我有一个小网页,里面有一个小的 CakePHP Webapp。 CakePHP 的东西在一个子目录中,所以我的 .htaccess 是这样的:

<IfModule mod_rewrite.c> 
  RewriteEngine on 
  RewriteRule ^test/subdirectory$ subdirectory/app/webroot
  RewriteRule ^test/subdirectory/(.*)$ subdirectory/app/webroot/$1
</IfModule>

现在导航到 domain.com/subdirectory 有效,但是对于我的登录路径,我只得到 404 =(

 Router::connect( '/login', array('controller' => 'users', 'action' => 'login'));

你能帮帮我吗?

//edit:我只是试了一下,我的其他路由(如 domain.com/controller/action/id)也不起作用。

【问题讨论】:

  • 那个 .htaccess 文件是在你的 web 根目录下还是在 Cake 的根目录下?

标签: .htaccess cakephp routes cakephp-2.0 subdirectory


【解决方案1】:

Change your debug level to '2'。在这个调试级别,Cake 会告诉你你实际上缺少什么,而不是给你一个 404。对于糟糕的重写规则,它可能会告诉你你缺少一个控制器,然后它会告诉你它在什么时候使用的路径它试图找到你的控制器。有了这些信息,您应该能够更正您的重写错误。

Cake 非常乐意在子目录中操作,因此您最简单的选择可能是将您的 Cake 移动到 /test/subdir。

【讨论】:

  • 调试级别设置为 '2' 但在 tmp/logs/error.log 中没有显示任何新内容 =/
  • @udo 如果 debug 设置为 2 并且您收到 HTTP404 错误,那么您可能从您的网络服务器而不是 Cake 收到错误,这意味着您的问题在于 url 重写而不是 Cake 路线。
  • 是的,但是为什么 /subdirectory 工作并且应用程序的起始页加载但所有其他路由都出错了 o.O?
  • 哦,我忘了将 RewriteBase 添加到三个 .htaccess 文件之一。感谢@Farray 再次向我指出重写规则 ^^
猜你喜欢
  • 1970-01-01
  • 2022-10-05
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
相关资源
最近更新 更多