【问题标题】:Cakephp routing without subdirectory nameCakephp 路由没有子目录名
【发布时间】:2013-03-03 18:25:41
【问题描述】:

我正在开发一个 CakePHP 应用程序。当我将它上传到主机的 public_html 目录时,我已经为它创建了一个子目录。

所以现在的结构是这样的:domain.com/subdircake/。

我在 public_html 根目录中包含了一个 .htaccess 文件,并且我已将 webroot 文件夹中的 index.php 更改为指向子目录。

我不知道这是 cakeapp 内部的路由问题,还是由于 .htaccess 配置错误而导致的 mod_rewrite 问题,但这是怎么回事。

  1. 我可以访问该域,它会显示应用程序的主页。
  2. 链接指向 domain.com/subdircake/action 而不是 domain.com/action。
  3. 当我将 url 强制为 domain.com/action 时,它可以工作,这让我感到压力很大,因为我不知道为什么。

所以我认为它必须是一些重写问题,但我没有任何线索。

有人知道吗?

【问题讨论】:

  • 该 public_html 目录中是否已经托管了另一个网站?您是否还可以访问 public_html 目录“外部”的目录?只是为了告知您将适用哪些选项。
  • 不,这是唯一的站点。我没有 public_html 目录之外的访问权限。

标签: cakephp


【解决方案1】:

转到domain.com/action 工作的原因是您的 .htaccess 解决方案是有效的 - 它确实将 URL 重写到正确的位置。但是,CakePHP 的路由系统不知道您对默认重写脚本所做的更改,这会导致 HTML Helper 生成的链接仍然指向它们在不编辑 .htaccess 文件时会指向的位置。

想到的第一个解决方案是更改您的App.base 配置;在Config/bootstrap.php,添加这一行:

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

看看是否有帮助。不过,我建议在更改该设置后彻底测试该站点 - 许多 CakePHP 功能都使用它,结果可能出乎意料。

【讨论】:

    【解决方案2】:

    你使用 userdir mod 吗?

    如果这样做,您必须编辑 3 cake .htaccess(位于 cake 文件夹的根目录、app/ 文件夹和 app/webroot/ 文件夹中,并在RewriteEngine On线:

    #.htaccess :
    RewriteBase /~username/
    
    #app/.htaccess :
    RewriteBase /~username/app
    
    #app/webroot/.htaccess :
    RewriteBase /~username/app/webroot
    

    用您的用户名替换用户名,但不要忘记 ~

    如果你的 cake 文件夹在子目录中,它将是 /~username/subdir/...

    【讨论】:

      【解决方案3】:

      webroot 目录的内容放入您的public_html 文件夹中。

      然后将index.php(在 webroot/public_html 中,而不是在 cake 的应用程序目录中)更改为以下几行

      if (!defined('ROOT')) {
          define('ROOT', 'subcakedir');
      }
      
      /**
       * The actual directory name for the "app".
       *
       */
      if (!defined('APP_DIR')) {
          define('APP_DIR', 'app');
      }
      

      【讨论】:

        【解决方案4】:

        Thiago Campezzi 的回答完美,我和Kornel 有完全相同的问题

        Config/bootstrap.php 中,添加这一行:

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

        我还不能评论或投票,所以我在这里写了:)谢谢!我搜索了几个小时来寻找这个答案!

        顺便说一句,这适用于 .htaccess 和没有它,因此每次您将新版本的应用程序上传到网络服务器时都无需更改此设置。

        【讨论】:

        • 请不要添加“谢谢”答案。对于有用的答案,请在获得代表后投票。
        猜你喜欢
        • 2022-10-05
        • 1970-01-01
        • 2012-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        相关资源
        最近更新 更多