---
# System prepended metadata

title: Web.config 規則
tags: [webconfig, url]

---

# Web.config 規則
----
###### tags: `webconfig` `url`

web中url有一定的規則
這些規則在框架中很常見
但看了有一陣子

## 規則

> 1. web中顯判斷有無資料夾
> 2. 在判斷資料夾下有沒有index.php(預設文件)或是文件有存在
> 有預設文件   先以預設文件為主
> 沒有預設文件 吃web.config
> 

## 範例

在下面結構中的admin新增一個test.php
test.php可以完全不用寫或是只寫echo

在網址列(URL中打)
1. admin/test
2. admin/test.php

第1點會轉到web.config
第2點會吃檔案

## admin/log-in

在admin/index.php中內容只有一個倒轉

```php=
header('Location: /admin/log-in');
exit();
```

所以跑法是依序為
1. admin或admin/ 吃index檔案
2. 檔案中只有導轉 所以302轉向後的URL為 `IP/admin/log-in`
3. 此為REST URL 且無檔案 吃web.config
4. web.config轉向到設定之檔案 也就是通常的public/index.php(放置Route的index.php)
5. index.php中找Route 查詢有無mapping的路線
    6. 有 輸出結果
    7. 無 404或是error-page


## 簡易框架

這是主管給的簡易PHP框架結構
資料夾 根目錄在Root
網站  根目錄在public

這樣的架構不少

通常在public下放置web.config檔
web.config的功能是管 從這個(資料夾/path)之後的url方向
在依照上述規則來總結admin/index.php 怎麼轉向的?

1. 使用者在網址輸入 admin/ 或 admin(這個也是要另外設定的)
2. 發出請求到admin下的預設文件(index.php)
3. 返回處理好的文件(跳轉)
4. 跳轉文件再次發出請求
5. 跳轉url為admin/log-in 所以去admin下找文件 找不到東西後根據web.config返回到public
6. 依照web.config到預設文件去(通常是建立Route的index.php)
7. 進到文件後就是走Route設定
8. 返回 回應
9. 整個流程結束


url打admin 跟admin/ 會出現不同的請求方式

```
Jason PHP 框架  說明文件

[ROOT]                            網站目錄
  │
  ├── _source                     存放專案相關的檔案
  │
  ├── app                         各個程式功能的位置
  │    │
  │    ├── backend                程式後台目錄
  │    │
  │    ├── common                 程式共用檔目錄
  │    │
  │    └── frontend               程式前台目錄
  │
  ├── config                      網站設定檔
  │
  ├── public*                     IIS 的網站主目錄(web.config放置地方)
  │    │
  │    ├── admin*                 後台主目錄
  │    │    │
  │    │    ├── css               後台 css
  │    │    │
  │    │    ├── images            後台 images
  │    │    │
  │    │    └── js                後台 js
  │    │
  │    ├── css                    前台 css
  │    │
  │    ├── images                 前台 images
  │    │
  │    └── js                     前台 js
  │
  ├── src                         程式引用的來源目錄
  │    │
  │    ├── librarys               程式副程式庫
  │    │
  │    └── templates              程式使用的樣版目錄
  │
  └── vendor                      第三方程式庫
```



![](https://i.imgur.com/WY5PuMe.png)

