多站点php_多站点 · SPHP · 看云

多站点使用入口文件的方式控制,要添加一个站点,直接在public目录里面添加一个入口文件即可。

## 添加多站点(以index+admin站点为例)

### 1. 子域名方式

- apache服务器

1. 站点配置。在apache的httpd-vhost中加入两个站点的配置:

```

# 默认站点配置

DirectoryIndex index.php

DocumentRoot "/directory/to/your-project/public"

ServerName 您的域名

# admin子站点配置

DirectoryIndex admin.php

DocumentRoot "/directory/to/your-project/public"

ServerName 您的admin子域名

```

2. 重写规则配置(站点public目录下的.htaccess文件)

1. 修改默认重写规则,添加域名限制。

```

# 在上面添加一行域名限制

RewriteCond %{HTTP_HOST} ^您的域名$ [NC]

# 一下为原本的配置信息

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

```

2. 目录中加入重写规则:

```

RewriteCond %{HTTP_HOST} ^您的admin子域名$ [NC]

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ admin.php/$1 [QSA,PT,L]

```

完整的.htaccess文件内容:

```

Options +FollowSymlinks -Multiviews

RewriteEngine On

# 默认站点重写规则

RewriteCond %{HTTP_HOST} ^您的域名$ [NC]

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

# admin子站点重写规则

RewriteCond %{HTTP_HOST} ^您的admin子域名$ [NC]

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ admin.php/$1 [QSA,PT,L]

```

- nginx服务器

在nginx服务器中,同样添加一个admin子域名的站点,默认访问文件改为admin.php即可,完整的nginx配置文件如下:

```

# 默认站点配置

server {

listen 80;

server_name 您的域名;

root /directory/to/your-project/public;

location / {

index index.html index.htm index.php;

if (!-e $request_filename) {

rewrite ^(.*)$ /index.php?s=/$1 last;

break;

}

}

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

# admin子站点配置

server {

listen 80;

server_name 您的admin子域名;

root /directory/to/your-project/public;

location / {

index admin.php;

if (!-e $request_filename) {

rewrite ^(.*)$ /admin.php?s=/$1 last;

break;

}

}

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

```

> 以上配置信息中,您需要将目录名及域名改为您的目录及域名。

> 如果需要配置https等信息,请自行添加https证书配置即可。

## 2.

多站点实现的两种方式:

1. 使用子域名。

优点:

1. 不会污染url,不需要再url中加入入口文件名。

2. 缺点:需要在服务器(apache、nginx)中配置相关域名并指向到对应入口文件。无法做到开箱即用。

3. apache必须开启rewrite模块。一般在使用thinkphp框架时,已经开启了重写模块,所以这个限制问题不大。

3. 考虑apache中是否可以通过htaccess文件配置,解决服务器自动配置的问题。

2. url中加入对应入口文件路径。

1. 优点:可以做到开箱即用。不需要修改服务器配置。

2. 缺点:会污染url。前端处理麻烦,需要统一配置url前缀,并在前端ajax请求及对应url跳转时加入前缀。需要修改的地方太多。

3. 前端需要解决默认站点不带前缀与其他站点带前缀的问题。(根据访问url与pathinfo,自动处理前缀,并将前缀发送到前端)

---

考虑怎么将两种用法综合,用户可以开箱即用,及在url中加入对应入口文件,并可通过默认入口文件放人默认站点。也可通过配置子域名,去除url污染。

> 首选实现1,然后再1的基础上实现2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值