Ссылки не работают при установке CakePHP на виртуальный хостинг

Я установил CakePHP на виртуальном хостинге в подкаталоге (cakeDomain). Используя htaccess в корневом каталоге (mainDomain), я указал на него другой домен (cakeDomain), вот так:

# /.htaccess
# cakeDomain redirect rules
RedirectMatch 301 ^/cakeDomain/$ http://cakeDomain.com/
# handle domain root and skip subfolders
RewriteCond %{HTTP_HOST} cakeDomain.com
RewriteCond %{REQUEST_URI} !^/cakeDomain/
RewriteCond %{REQUEST_URI} \..+$
RewriteRule ^(.*)$ cakeDomain/$1 [L]

# add trailing slash to subfolders (eg abc to: abc/)
RewriteCond %{HTTP_HOST} cakeDomain.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} [^/]$
RewriteRule ^(.*)$ $1/ [L,R=301]

# handle files in subfolders
RewriteCond %{HTTP_HOST} cakeDomain.com
RewriteCond %{REQUEST_URI} !^/cakeDomain/
RewriteRule ^(.*)$ cakeDomain/$1/ [L]

RewriteCond %{HTTP_HOST} www.mainDomain.com/cakeDomain/
RewriteRule %{HTTP_HOST} www.cakeDomain.com [L]

Посещение mainDomain.com/cakeDomain корректно перенаправляет вас на cakeDomain.com

Файлы CakePHP хранятся так:

/cakeDomain/app/...
/cakeDomain/lib/...
/cakeDomain/...
etc.

При посещении сайта cakeDomain.com открывается правильная главная страница, но перед всеми ссылками стоит установленный каталог:

cakeDomain.com/cakeDomain/controller/action/param1

Вместо:

cakeDomain.com/controller/action/param1

Любые идеи, как это исправить?

Обратите внимание, из моих многочисленных поисков, что многие люди сразу же предлагают виртуальные хосты. Это не вариант здесь; мой хостинг является виртуальным хостом. Я предполагаю, что это решение требует трюков с htaccess и/или маршрутизацией. Заранее благодарим вас за любую помощь, которую вы можете предоставить.


person Will Stone    schedule 02.02.2013    source источник


Ответы (1)


По сути, вы помещаете веб-сайт B (Cake) в общедоступный веб-каталог веб-сайта A (основной домен).

Я бы ДЕЙСТВИТЕЛЬНО не рекомендовал вам это делать, потому что таким образом все «частные» каталоги CakePHP также находятся внутри вашего общедоступного веб-каталога (например, cakeDomain/app/tmp/logs/error.log). Пожалуйста, проверьте должным образом, если эти места защищены должным образом

Есть ли у вас доступ к каталогам «за пределами» вашей общедоступной веб-страницы?

Сказав это, это может помочь: http://cookingwithcakephp.blogspot.nl/2008/04/installing-cakephp-into-subdirectory.html

person thaJeztah    schedule 02.02.2013
comment
Спасибо за ответы. Я видел эту страницу раньше, но она не работала. Я могу получить доступ к каталогу выше public_html. Это поможет? Итак, CakePHP в настоящее время установлен в /public_html/cakeDomain/. - person Will Stone; 03.02.2013
comment
Ну, по крайней мере, вы не размещаете весь свой «частный» код внутри своего веб-сайта. Что работает в «основном» домене? Всего несколько HTML-страниц или также установка CakePHP? - person thaJeztah; 03.02.2013
comment
Нет. единственная установка торта находится на этом дополнительном домене. - person Will Stone; 03.02.2013