2012-06-17 4 views
0

Использование CakePHP. Веб-сайт www.villapalmeras.co.uk. Когда я просматриваю корень, мои ссылки отображаются правильно (т.е. http://www.villapalmeras.co.uk/public/events). Когда я перехожу к любой другой странице, та же ссылка тогда отображается как http://www.villapalmeras.co.uk/websites/123reg/LinuxPackage25/jo/rd/an/jordanwallwork.co.uk/public_html/domains/villalaspalmeras/public/events.htaccess/url rewrite issues

Я использую пакет хостинга 123-reg и сопоставил домен villapalmeras.co.uk с областями местоположения/villapalmeras (корень это мой сайт на jordanwallwork.co.uk). Пробовал редактировать файлы .htaccesses без успеха.

Мои файлы .htaccess являются:

/domains/villapalmeras/.htaccess:

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

/domains/villapalmeras/app/.htaccess:

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

/домены/villapalmeras /app/webroot/.htaccess

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

index.php:

define('APP_DIR', 'app'); 
define('DS', DIRECTORY_SEPARATOR); 
define('ROOT', dirname(__FILE__)); 
define('WEBROOT_DIR', 'webroot'); 
define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS); 

if (!defined('CAKE_CORE_INCLUDE_PATH')) { 
    define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib'); 
} 

require APP_DIR . DS . WEBROOT_DIR . DS . 'index.php'; 
+0

Можете ли вы разместить ROOT, APP_DIR и CAKE_CORE_INCLUDE_PATH из вашего index.php, пожалуйста? Если эти параметры настроены правильно, вам не нужно связываться с .htaccesses. – swiecki

ответ

0

Просто чтобы прояснить мой комментарий выше, код, который вы хотите изменить, может быть в вашем index.php:

код, который вы ищете:

/** 
* The full path to the directory which holds "app", WITHOUT a trailing DS. 
* 
*/ 
    if (!defined('ROOT')) { 
     define('ROOT', dirname(dirname(dirname(__FILE__)))); 
    } 
/** 
* The actual directory name for the "app". 
* 
*/ 
    if (!defined('APP_DIR')) { 
     define('APP_DIR', basename(dirname(dirname(__FILE__)))); 
    } 
/** 
* The absolute path to the "cake" directory, WITHOUT a trailing DS. 
* 
*/ 
    if (!defined('CAKE_CORE_INCLUDE_PATH')) { 
     define('CAKE_CORE_INCLUDE_PATH', ROOT); 
    } 

Оно должно быть изменено на что-то более, как:

/** 
* The full path to the directory which holds "app", WITHOUT a trailing DS. 
* 
*/ 
    if (!defined('ROOT')) { 
     define('ROOT', DS . 'home' . DS . 'username'); 
    } 
/** 
* The actual directory name for the "app". 
* 
*/ 
    if (!defined('APP_DIR')) { 
     define('APP_DIR', 'domain.com'); 
    } 
/** 
* The absolute path to the "cake" directory, WITHOUT a trailing DS. 
* 
*/ 
    if (!defined('CAKE_CORE_INCLUDE_PATH')) { 
     define('CAKE_CORE_INCLUDE_PATH', 'home' . DS . 'username'); 
    } 

в зависимости, конечно, от структуры каталогов ваших хостов.

+0

Я действительно хочу поддержать это, но ваши отзывы - 777! Я просто не могу! – Adi

+0

не делайте этого! Я потеряю разрешения! Не говоря уже о неблагоприятных последствиях моей удачи. – swiecki

+0

Спасибо, я даже не понял, что в этом файле есть настраиваемые настройки! Я посмотрю, но также я включил то, что настройки в настоящее время на случай, если вы можете обнаружить проблему –

2

Получается, ответ был очень прост! Все, что мне нужно было сделать, это добавить RewriteBase / ко всем файлам .htaccess, а не только к корню, а затем отлично сработало

0

Вы должны изменить каждый .htaccess и не нуждаетесь в изменении в index.php или другом файлы.

/domains/villapalmeras/.htaccess: 

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

/domains/villapalmeras/app/.htaccess: 

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

/domains/villapalmeras/app/webroot/.htaccess 

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