文章目录
  1. 1. Defined
  2. 2. Main()
    1. 2.1. 入口规则
    2. 2.2. 方案1:文件名规范
      1. 2.2.1. 目录结构
      2. 2.2.2. 根目录.htaccess重写
      3. 2.2.3. URL实现
    3. 2.3. 方案2:文件夹归类
      1. 2.3.1. 目录结构
      2. 2.3.2. 分支.htaccess 重写
      3. 2.3.3. URL实现
    4. 2.4. 模块分组(ThinkPHP)
  3. 3. Reference

Defined

最近写了点东西, 正好遇到以前不懂的问题, 着手解决php中多入口的实现方法.参考见底
写的是关于CodeIgniter(CI)框架的多入口URL控制问题. 其他php框架原理类似

Main()

入口规则

和常见的cms一样
-index 普通用户
-admin 管理员

方案1:文件名规范

利用服务器重写规则进行文件名规范
这个说白了就是完全的两份, 改了一下名字~

目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
application
├── assets
│   ├── css
│   ├── fonts
│   └── js
├── index
│   ├── controllers
├── admin
│   ├── controllers
├── views
├── system
├── index.php #入口1
├── admin.php #入口2
├── index.html
└── .htaccess

根目录.htaccess重写

1
2
3
4
5
6
7
# .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|images|assets|robots\.txt|$)
RewriteRule ^i_(.*)$ /application/index.php/$1 [L]
RewriteRule ^a_(.*)$ /application/admin.php/$1 [L]

URL实现

访问users的登录: /i_login/
访问admin的登录: /a_login/

方案2:文件夹归类

目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
application
├── admin
│   ├── admin.php #入口1
│   ├── controllers
│   ├── .htaccess
├── assets
│   ├── css
│   ├── fonts
│   └── js
├── index
│   ├── admin.php #入口2
│   ├── controllers
│   ├── .htaccess
├── index.html
├── system
└── views

分支.htaccess 重写

每个分支都有一个.htaccess

1
2
3
4
5
# admin's .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /application/admin/index.php/$1

.htaccess 配置详解戳这->htaccess.md

URL实现

访问users: /index/
访问admin: /admin/
根目录的/index.htmljs 301跳转可以实现直接访问到/index/index.php/index

模块分组(ThinkPHP)

这个见Reference

Reference

ThinkPHP两个入口文件-segmentfault

文章目录
  1. 1. Defined
  2. 2. Main()
    1. 2.1. 入口规则
    2. 2.2. 方案1:文件名规范
      1. 2.2.1. 目录结构
      2. 2.2.2. 根目录.htaccess重写
      3. 2.2.3. URL实现
    3. 2.3. 方案2:文件夹归类
      1. 2.3.1. 目录结构
      2. 2.3.2. 分支.htaccess 重写
      3. 2.3.3. URL实现
    4. 2.4. 模块分组(ThinkPHP)
  3. 3. Reference