使用Nginx时,Joomla在子目录下创建网站所遇到的问题

Joomla网站是支持子目录安装的。例如我的网站是www.ycway.com

我在我的网站安装一个Joomla网站程序;然后我在网站根目录下新建一个命名为about的文件夹,然后在这个文件夹内安装Joomla。这样我就有两个独立的Joomla程序(后台),http://www.ycway.com/about可以算是子目录;

如果你在子目录网站后台,开启了SEF的功能,又刚好你用的是Nginx,就会导致你的子目录网站的其他页面都无法正常访问

一、Joomla使用Apache文件服务器

Joomla使用Apache,开启SEF是需要使用启用.htaccess文件。而当我们创建子目录的时候,.htaccess依然能正确处理子目录的URL,所以不会有问题。

一、Joomla使用Nginx文件服务器

Joomla使用Nginx,开启SEF是需要配合你的Nginx的Conf配置文件。由于Conf文件的规划问题,当Joomla创建子目录的时候,是无法正确处理子目录的URL的。

这时我们需要修改Conf文件,为每个子目录添加解释规则

location /My_Subdirectory/ {
if ($request_uri ~ "^system.*"){
rewrite ^/My_Subdirectory/(.*)$ /My_Subdirectory/index.php?/$1 last;
}
if (!-e $request_filename){
rewrite ^/My_Subdirectory/(.*)$ /My_Subdirectory/index.php?/$1 last;
}
}

*My_Subdirectory需要替换成你实际的子目录名称
*如果有多个子目录,就添加多个这样的规则。