子域使用相同的后端和不同的CSS

时间:2014-09-22 15:14:16

标签: php html css .htaccess

我为我的网站创建了多个子域名...

主要网站:
example.com

子域:
name1.example.com
name2.example.com
name3.example.com
name4.example.com

子域将使用与主站点相同的php和html后端。唯一的区别是CSS。

我在考虑可能只需要在每个子域的文档中需要我需要的文件,这样我就可以全面快速地进行更新。

我不确定这是处理此问题的最佳方法,但完全克隆网站似乎是多余的。有没有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:0)

我有一个java背景,但我确信在php中有类似的东西,你可以将每个子域的所有css文件放在一个单独的文件中。然后在您的PHP代码中,检查请求的URL并包含包含该子域的CSS的文件

答案 1 :(得分:0)

还有更好的方法,是的。这就是我接近这种情况的方式。

假设您的前端有这个文件树;

- /
 - [all-backend related files]
 - sites/
 |- default/
   |- pages/
     |- index/
       | - index.css
 |- name1/
   |- pages/
     |- index/
       | - index.css
 |- name2/
   | - pages/
      | - index/
        | - index.css

您的PHP看起来就像;

function isSubdomain() {
// http://stackoverflow.com/a/15852997/3000179
    $host = $_SERVER['HTTP_HOST'];
    $host = explode('.',$host);
    $host = (is_array($host)?$host[0]:$host);
    return $host;
}

//Assume we are on the site1.domain.com/index
//Assume we are on your template file, and we're at the
//<head> tags within your page
if( file_exists(__DIR__ .'/'. isSubdomain() .'/pages/index/index.css') ) {
   echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"".  __DIR__ ."/". isSubdomain() ."/pages/index/index.css\">";
} else {
   echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"".  __DIR__ ."/default/pages/index/index.css\">";
}

然后,将所有子域指向DocumentRoot/,并让PHP加载相关的CSS文件。