我有一种独特的情况。 我开发了一个cakephp应用程序,需要将其部署到带有内容的共享服务器。 我知道通常我们应该在webroot中有静态内容,但是不允许这样做,因为这个应用程序需要在以后删除。
它是一个共享主机,我无法更改DocumentRoot或任何管理相关的设置。但是我可以添加.htacces文件。
我的文件按以下顺序排列:
/webapp /app /lib ... /webroot
我想你明白了。 我计划将整个“webapp”文件夹与静态站点一起部署,并具有登录链接,以便人们可以http://mysite.com/webapp/users/login来到该站点。 不幸的是,我不知道这样做的正确方法。我希望按原样保留目录结构,这样有人可以轻松修改并删除它。
感谢任何帮助。
更新: 我忘了提到本地我曾经通过
http://localhost/webapp访问该网站,该网站基于DocumentRoot / VirtualHost设置。我可能无法在prod上做到这一点,那么我怎么能用路线翻译呢?
答案 0 :(得分:1)
如果您想使用Apache从子目录中提供CakePHP,那么您正在寻找RewriteBase指令。将指令添加到三个.htaccess
文件中的每一个(在CakePHP根目录,app
和app/webroot
中)。例如,根目录最终看起来像:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /webapp
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
现在,Cake会很高兴在您的webapp
子目录中提供服务。
答案 1 :(得分:1)
您需要更新.htaccess
个文件以引用/webapp/app/webroot/
而不是/app/webroot/
。
虽然我很想在您的Web服务器的公共可访问目录的根目录中安装CakePHP应用程序,但是使用CakePHP的内置PagesController
来提供静态文件,只需删除控制器和当你需要时。