# 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)