代码之家  ›  专栏  ›  技术社区  ›  Kard Nails

在子目录中安装Joomla

  •  3
  • Kard Nails  · 技术社区  · 9 年前

    你们中的一些人可能知道,Wordpress在设置中有一个选项,允许在子目录中安装站点,同时将站点URL作为主域。它有点像“站点url”和“Wordpress url”。我在乔姆拉找这样的东西。我知道没有内置选项,但如果可能的话,我宁愿不必移动所有文件。请像对一个五岁的孩子一样向我解释,以防万一:)

    4 回复  |  直到 9 年前
        1
  •  6
  •   Community CDub    8 年前

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

    • 将整个安装移到子文件夹
    • 在配置中。php,设置$live_site=“ http://example.com ";
    • 同时更改configuration.php中的tmp和日志文件夹
    • 将.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文件,现在位于/subdir文件夹中,以包含RewriteBase:

    RewriteBase /subdir/
    

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

        2
  •  1
  •   jonasfh    9 年前

    您可以覆盖文件/包含/定义。php安装。将此文件复制到安装的根文件夹,然后将所有文件夹名称更改为您喜欢的设置。

    输入/索引。php,您可以看到它如何首先检查if/defines。php存在。然后继续加载/包含/定义。php,如果未定义_JDEFINES。所以一定要包括

    define('_JDEFINES', 'TRUE');
    

    在重写的/defines.php-file中。祝你好运:)

    下面是如何索引的。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';
    }
    

    我现在看到,您可以用类似的方法copy/administrator/includes/defines覆盖/adminiinistrator中的文件夹位置。php到/administrator并在此处覆盖文件夹。

        3
  •  0
  •   Sphinx    9 年前

    我使用了一个名为 Virtual Domains 之前。根据他们的说法,它提供了

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

    。我以前用过,效果很好

        4
  •  0
  •   CWBudde    8 年前

    我首先尝试了公认的答案。但是,该答案也会将现有文件和文件夹重定向到新的子目录。

    为此,我使用了:

    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]
    

    相反

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