Home > Article > PHP Framework > How to use ThinkPHP6 for multi-site management?
In web development, sometimes you need to build multiple sites for customers, but maintaining multiple sites will increase the workload. At this time, you need to use multi-site management. ThinkPHP6 is a powerful framework that supports multi-site management. This article will share how to use ThinkPHP6 for multi-site management.
1. Configure virtual host
To use multi-site management, you need to configure a virtual host on the server. Generally, the configuration of virtual hosts is performed in the Apache configuration file, which can be achieved by editing the httpd.conf
file. For example, we can configure two virtual hosts locally. Suppose one site is www.site1.com
and the other is www.site2.com
, then we can configure it like this.
<VirtualHost *:80> ServerName www.site1.com DocumentRoot "E:/www/site1/" <Directory "E:/www/site1/"> AllowOverride All Require all granted </Directory> </VirtualHost> <VirtualHost *:80> ServerName www.site2.com DocumentRoot "E:/www/site2/" <Directory "E:/www/site2/"> AllowOverride All Require all granted </Directory> </VirtualHost>
It should be noted that the defined document root directory must exist and be readable and writable.
2. Create a ThinkPHP6 project
There is no difference between creating a multi-site management project and creating an ordinary project. Use the Composer command to create a project: composer create-project topthink/think myproject
. After creation, the directory structure is as follows:
myproject ├─app │ ├─admin │ └─index ├─config ├─public ├─route ├─runtime └─think
There are two directories under this project, index
and admin
. We can think of the index
directory as the root directory of a site, and the admin
directory as the root directory of another site. For easier management, we can set them up as separate applications.
3. Multi-application configuration
In order to achieve the management of multiple applications, we need to make modifications in the configuration file.
app.php
app.php
file in the config
directory. First, we need to set auto_multi_app
to true
in the configuration file.
return [ 'auto_multi_app' => true, 'app_map' => [ 'site1' => 'index', 'site2' => 'admin', ], ... ];
We then use app_map
items to define applications for each site. For example, we set site1
to the index
application and site2
to the admin
application.
route.php
Open the route.php
file and configure routing rules for each site. For example, for the site1
site, we can configure it like this:
Route::domain('www.site1.com', function () { Route::get('/', 'index/hello'); });
This will bind index
to the www.site1.com
application The hello
method on the Index
controller.
Similarly, for the site2
site, our configuration may be like this:
Route::domain('www.site2.com', function () { Route::get('/', 'admin/hello'); });
This will bind www.site2.com
admin
The hello
method on the Index
controller in the application.
4. Test
Now, we have completed the configuration of multi-site management. Now let's test it out. Open your browser and enter www.site1.com
in the address bar. You should see index
in the Index
controller of your application. The output of hello method. Likewise, enter
www.site2.com and you should see
admin in the application
Index in the controller
hello The output of the method.
The above is the detailed content of How to use ThinkPHP6 for multi-site management?. For more information, please follow other related articles on the PHP Chinese website!