分站实现php
分站实现 PHP 方案
使用子目录结构
在服务器根目录下创建子文件夹作为分站目录,例如 /site1、site2。每个子目录包含独立的 index.php 和配置文件。通过 .htaccess 实现子目录伪静态:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site1/$1 [L]
多域名绑定
注册不同域名并解析到同一服务器,通过虚拟主机配置实现分站隔离。Apache 配置示例:
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /var/www/site1
</VirtualHost>
Nginx 配置示例:
server {
listen 80;
server_name site2.com;
root /var/www/site2;
}
数据库分离设计
为每个分站创建独立数据库或使用前缀区分表:
// 动态选择数据库
$site_id = 'site1';
$db_name = 'db_' . $site_id;
$conn = new mysqli('localhost', 'user', 'pass', $db_name);
共享核心代码
通过符号链接或 Composer 引入公共库,避免代码重复:
ln -s /var/www/core /var/www/site1/core
动态配置加载
根据访问域名自动加载对应配置:
$config = require __DIR__ . '/configs/' . $_SERVER['HTTP_HOST'] . '.php';
会话隔离处理
为不同分站设置独立的会话 Cookie 路径:
session_set_cookie_params(0, '/site1/');
session_start();
自动化部署
使用 CI/CD 工具同步公共代码到各分站:
# GitHub Actions 示例
- name: Deploy to sites
run: |
rsync -avz ./common/ user@server:/var/www/site1/common/
rsync -avz ./common/ user@server:/var/www/site2/common/






