6
votes

Using the default cakephp htaccess file setup will not work on my domain when I want to install my Cakephp app in a subfolder, while everything works on localhost (xampp)

target => http://example.com/mycakeapp

Install needs 3 htaccess files:

root .htaccess

    #.htaccess in root
    
       RewriteEngine on
       RewriteBase  /mycakeapp
       RewriteRule    ^$ app/webroot/    [L]
       RewriteRule    (.) app/webroot/$1 [L]
    
    
in app .htaccess
        
            RewriteEngine on
            RewriteBase /mycakeapp
            RewriteRule    ^$   app/webroot/    [L]
            RewriteRule    (.)  app/ webroot/$1    [L]
        
    
in webroot .htaccess
        
            RewriteEngine On
            RewriteBase /mycakeapp
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ index.php [QSA,L]
        
    

Following cakephp documentation, and Using these htaccess files, I get error500 results. Using RewriteBase / instead of /mycakeapp will throw 404 error page.

php is in 5.4 version How can I solve this?

2

2 Answers

3
votes

Setup your rules like this:

.htaccess in DOCUMENT_ROOT

RewriteEngine on
RewriteBase /
RewriteRule (.*) mycakeapp/$1 [L]

.htaccess in DOCUMENT_ROOT/mycakeapp

RewriteEngine on
RewriteBase /mycakeapp/
RewriteRule (.*) app/webroot/$1 [L]

.htaccess in DOCUMENT_ROOT/mycakeapp/app

RewriteEngine on
RewriteBase /mycakeapp/app/
RewriteRule (.*) webroot/$1 [L]

.htaccess in DOCUMENT_ROOT/mycakeapp/app/webroot

RewriteEngine On
RewriteBase /mycakeapp/app/webroot/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
6
votes

/dirCakePhp

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

/direCakePhp/app

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

/direCakePhp/app/webroot

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>

Juste add '/' after RewriteRule,

And change PHP version in 1and1 hosting panel to => 5.2 Add date_default_timezone_set('Europe/Paris'); in core.php