在一个子目录中安装Joomla

时间:2016-01-20 08:16:52

标签: joomla subdirectory

正如您可能知道的那样,Wordpress在设置中有一个选项,允许在子目录中安装站点,同时将站点URL作为主域。这就像"网站网址"和" Wordpress网址"。我正在Joomla寻找类似的东西。我知道没有内置的选项,但我不想在可能的情况下移动所有文件。请向我解释,就像一个五岁的孩子一样,以防万一:)

4 个答案:

答案 0 :(得分:6)

要将整个joomla安装移动到服务器上的子文件夹(http://example.com/subdir),但仍然从根(http://example.com)访问它,我执行了以下操作:

  • 将整个安装移至subdir-folder
  • 在configuration.php中,设置$ live_site =“http://example.com”;
  • 同时更改configuration.php
  • 中的tmp和log-folders
  • 将.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]

修改现在在/ subdir-folder中的默认joomla .htaccess文件,以包含RewriteBase:

RewriteBase /subdir/

经过这些修改后,似乎一切都按照应有的方式运作。

答案 1 :(得分:1)

您可以在joomla安装中覆盖文件/includes/defines.php。将此文件复制到安装的根文件夹,然后将所有文件夹名称更改为您的设置方式。

在/index.php中,您会看到它首先检查/defines.php是否存在。然后,如果未定义_JDEFINES,则继续加载/includes/defines.php。所以一定要包括

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';
}

我现在看到您可以在/ administrator中覆盖类似的文件夹中的文件夹位置,将/administrator/includes/defines.php复制到/ administrator并在此处覆盖文件夹。

答案 2 :(得分:0)

之前我使用了名为Virtual Domains的扩展程序。根据他们提供

  

Joomla的多域功能,无需更改Joomla核心   文件。

。我之前使用过它并且效果很好

答案 3 :(得分: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]

代替。

我知道这不是最好的解决方案,因为它没有正确隐藏子目录。但是,它允许保持该站点上的现有代码正常工作。