Home  >  Article  >  PHP Framework  >  How to use ThinkPHP6 for multi-site management?

How to use ThinkPHP6 for multi-site management?

王林
王林Original
2023-06-12 12:10:401739browse

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.

  1. Modify the 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.

  1. Modify 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 adminThe 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.

If you have any problems, please check your virtual host configuration, routing configuration, etc.

5. Summary

It is not difficult to use ThinkPHP6 for multi-site management. The key is to reasonably arrange the directory structure, application management and routing configuration, and set up the relevant virtual hosts. Through this article, I believe you have learned how to use ThinkPHP6 for multi-site management.

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn