有些人可能知道,WordPress在设置中有一个选项,允许在子目录中安装网站,同时将网站URL设置为主域名。它类似于“网站URL”和“WordPress URL”。我正在寻找类似于Joomla的东西。我知道它没有内置选项,但如果可能的话,我不想移动所有文件。请像对待五岁儿童一样向我解释。
有些人可能知道,WordPress在设置中有一个选项,允许在子目录中安装网站,同时将网站URL设置为主域名。它类似于“网站URL”和“WordPress URL”。我正在寻找类似于Joomla的东西。我知道它没有内置选项,但如果可能的话,我不想移动所有文件。请像对待五岁儿童一样向我解释。
如果您想将整个 Joomla 安装移到服务器上的子文件夹(http://example.com/subdir),但仍然可以从根目录(http://example.com)访问它,请按照以下步骤进行:
(此代码修改自这个优秀的答案)
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/
define('_JDEFINES', 'TRUE');
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';
}
我首先尝试了被接受的答案。然而,那个答案也会将现有的文件和文件夹重定向到新的子目录。
因此,我使用了:
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]
取而代之。
我知道这并不是最好的解决方案,因为它无法很好地隐藏子目录。但是,它允许保持该站点上现有代码的工作。