2016-01-20 4 views
3

Как вы знаете, у Wordpress есть параметры в настройках, позволяющие устанавливать сайт в подкаталоге, а URL-адрес сайта - основной. Это было что-то вроде «URL-адрес сайта» и «URL-адрес Wordpress». Я ищу что-то подобное в Joomla. Я знаю, что для него нет встроенного варианта, но я бы предпочел не переместить все файлы, если это возможно. И, пожалуйста, объясните это мне, как пятилетнему, на всякий случай :)Установить Joomla в подкаталог

ответ

5

Чтобы переместить всю установку JOOMLA в подпапку на сервере (http://example.com/subdir), но все-таки получить доступ к нему из корня (http://example.com) я сделал следующее:

  • Переместить всю установку в подкаталоге-папке
  • В config.php, установите $ live_site = "http://example.com";
  • изменить Также ТМП и лог-папки в configuration.php
  • Добавить .htaccess-файл в корневой папке:

(код модифицируется из this excellent answer)

RewriteEngine on 
RewriteCond %{THE_REQUEST} subdir/ 
RewriteRule ^subdir/(.*) http://example.com/$1 [R=301,L] 
RewriteCond %{REQUEST_URI} !subdir/ 
RewriteRule ^(.*)$ /subdir/$1 [L] 

Изменение JOOMLA по умолчанию .htaccess-файл, теперь в/подкаталоге-папки, чтобы включить RewriteBase:

RewriteBase /subdir/ 

После этих изменений кажется, что все работает так, как должно.

+0

Спасибо! Это сделал трюк. –

+0

Совет. Мне пришлось добавить эти коды: https://stackoverflow.com/a/7781331/5681573 , чтобы ваши перезаписывающие элементы также работали на странице администратора Joomla без конечной косой черты в конце. – Cinzel

0

Я использовал расширение под названием Virtual Domains для этого раньше. В соответствии с ними он предоставляет

Многодоменная возможность для Joomla без изменения ядра Joomla .

. Что я использовал ранее и хорошо работает

+0

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

+0

Я согласен с вами. Но единственный способ, которым я вижу это, - создать аналогичное дополнение для достижения результатов, которые вам нужны для ваших спецификаций. – Sphinx

1

Вы можете переопределить файл /includes/defines.php в своей установке joomla. Скопируйте этот файл в корневую папку вашей установки, а затем измените имена всех папок так, как вам нравится ваша установка.

В /index.php вы видите, как он сначала проверяет, существует ли /defines.php. Затем он продолжает загружать /includes/defines.php, если _JDEFINES не определен. Поэтому обязательно включите

define('_JDEFINES', 'TRUE'); 

в ваш переопределенный /defines.php-file. Удачи :)

Ниже как папка index.php загружает определения:

if (file_exists(__DIR__ . '/defines.php')){ 
    include_once __DIR__ . '/defines.php'; 
} 
if (!defined('_JDEFINES')){ 
    define('JPATH_BASE', __DIR__); 
    require_once JPATH_BASE . '/includes/defines.php'; 
} 

теперь я вижу, что вы можете переопределить местоположение папки в/администратора в подобном деле, копировать/администратор/включает/define.php to/administrator и переопределять папки здесь.

+0

Извините за поздний ответ. Но я думаю, что я потерян. site.com/folder/index.php - это корень моей установки. Я хочу получить доступ к сайту site.com и показать сайт без необходимости переместить все файлы из/в папку root. Не могли бы вы опустить это для меня, что я должен сделать? –

+0

Я думаю, что самый простой способ достичь этого - использовать .htaccess, как описано здесь: http://stackoverflow.com/questions/10364951/make-web-root-folder-a-sub-folder-with-htaccess. Если вы уже используете файл .htaccess для своего сайта, это может быть немного сложно, так как вам нужно будет изменить его, чтобы соответствовать шаблону, объясненному ... – jonasfh

0

Я сначала попробовал принятый ответ. Однако этот ответ также перенаправляет существующие файлы и папки в новый поддиректор.

По этой причине я использовал:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/subdir/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /subdir/$1 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ subdir/index.php [L] 

вместо этого.

Я знаю, что это не лучшее решение, так как оно не скрывает соответствующий каталог. Тем не менее, это позволяет сохранить существующий код на этом сайте.