0

我有一种独特的情况。我已经开发了一个 cakephp 应用程序,需要将其部署到具有内容的共享服务器上。我知道通常我们应该在 webroot 中有静态内容,但不允许这样做,因为这个应用程序需要稍后删除。

它是一个共享主机,我无法更改 DocumentRoot 或任何与管理员相关的设置。但是,我可以添加 .htacces 文件。

我的文件按以下顺序排列:

    /webapp
       /应用程序
       /lib
       ...
       /webroot

我想你明白了。我打算将整个“webapp”文件夹与静态站点一起部署并拥有登录链接,这样人们就可以以http://mysite.com/webapp/users/login的身份访问该站点。不幸的是,我不知道这样做的正确方法。我希望保持原样的目录结构,以便后面的人可以轻松地修改和删除它。

任何帮助表示赞赏。

更新:我忘了提到我在本地访问该网站的方式是

http://localhost/webapp
,它基于 DocumentRoot/VirtualHost 设置。我可能无法在 prod 上做到这一点,那么如何使用路由进行翻译呢?

4

2 回答 2

1

如果您想使用 Apache 从子目录中为 CakePHP 提供服务,那么您正在寻找RewriteBase指令。将指令添加到三个.htaccess文件中的每一个(在 CakePHP 根目录、inapp和 in 中app/webroot)。例如,根目录最终看起来像:

<IfModule mod_rewrite.c>
    RewriteEngine  on
    RewriteBase    /webapp
    RewriteRule    ^$ app/webroot/    [L]
    RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

现在 Cake 会很高兴在您的webapp子目录中提供服务。

于 2012-10-24T00:44:12.513 回答
1

您需要更新.htaccess要引用的文件/webapp/app/webroot/而不是/app/webroot/.

虽然我很想将 CakePHP 应用程序安装在 Web 服务器的公共可访问目录的根目录中,但使用 CakePHP 的内置功能PagesController来提供静态文件,并在需要时删除控制器。

于 2012-10-24T13:34:24.990 回答