将CakePHP部署到子文件夹

时间:2012-10-21 16:56:23

标签: apache .htaccess cakephp cakephp-2.0 shared-hosting

我创建了一个CakePHP 2应用程序,现在我正在尝试将其部署到生产Web服务器。

我的应用程序使用默认文件夹结构(app / lib / plugins / vendors),默认htaccess,默认路由,没什么特别的。

我一直在本地开发,好像应用程序位于网站的根文件夹中(例如http://mycakeapp.localhost/将我带到网站)。但我正在部署到一个网站(共享托管),但情况并非如此(例如http://www.somedomain.com/mycakeapp)。

它不起作用(我真的没想到),所以我假设我必须调整一个或多个htaccess文件。我尝试修改根.htaccess as suggested in this post,但只是部分工作(例如,CSS的链接不起作用):

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

那么我应该对所有htaccess文件做些什么来使这个CakePHP网站在子文件夹中工作?

UPDATE:

网站的根目录中有.htaccess文件,我已将其内容粘贴到下方。是什么东西搞砸了?

RewriteEngine on
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^somedomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.somedomain.com/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^secure/$ https://www.somedomain.com/secure [R=301,L]
RewriteRule ^about\.html$ /contact.php [R=301,L]
RewriteRule ^contact\.html$ /contact.php [R=301,L]
RewriteRule ^download\.html$ /signup.php [R=301,L]
RewriteRule ^index\.html$ /index.php [R=301,L]
RewriteRule ^privacy\.html$ /policies.php [R=301,L]
RewriteRule ^website\.html$ /business-websites.php [R=301,L]
RewriteRule ^return\.html$ /policies.php [R=301,L]

1 个答案:

答案 0 :(得分:0)

这篇文章有点陈旧,但是在我的第一个CakePHP应用程序部署到子文件夹的复兴时发现了它。以下.htaccess行可以修改根文件夹(for):

RewriteBase /subdir/

有时Apache需要httpd.conf或虚拟主机配置文件中的其他权限或选项,类似于以下内容:

    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www/html/site_folder>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            AddOutputFilterByType DEFLATE text/html text/plain text/xml
    </Directory>