ThinkPHPæ¯æè·¯ç±URLå°åçç»ä¸çæï¼å¹¶ä¸æ¯æææçè·¯ç±æ¹å¼ï¼ä»¥åå®ç¾è§£å³äºè·¯ç±å°åçå转解æï¼æ éå为路ç±å®ä¹åååèæ¹åURLçæã
>[danger] å¦æä½ å¼å¯äºè·¯ç±å»¶è¿è§£æï¼éè¦çæè·¯ç±æ å°ç¼åæè½æ¯æå
¨é¨çè·¯ç±å°åçå转解æã
URLçæä½¿ç¨ `\think\facade\Route::buildUrl()` æ¹æ³å³å¯ã该æ¹æ³ä¼è¿åä¸ä¸ª`think\route\Url`对象å®ä¾ï¼å 为使ç¨äº`__toString`æ¹æ³ï¼å æ¤å¯ä»¥ç´æ¥è¾åºè·¯ç±å°åã
```
echo \think\facade\Route::buildUrl();
```
å¦ææ¯éè¿æ°æ®è¿å客æ·ç«¯ï¼ä½ å¯ä»¥å
强å¶è½¬æ¢ä¸ºå符串类åååè¿åã
```
$url = (string) \think\facade\Route::buildUrl();
```
## 使ç¨è·¯ç±æ è¯
对使ç¨ä¸åçè·¯ç±å°åæ¹å¼ï¼å°å表达å¼çå®ä¹ææåºå«ãåæ°åç¬éè¿ç¬¬äºä¸ªåæ°ä¼ å
¥ï¼å设æ们å®ä¹äºä¸ä¸ªè·¯ç±è§åå¦ä¸ï¼
~~~
Route::rule('blog/:id','blog/read');
~~~
å¨æ²¡ææå®è·¯ç±æ è¯çæ
åµä¸ï¼å¯ä»¥ç´æ¥ä½¿ç¨è·¯ç±å°åæ¥çæURLå°åï¼
~~~
Route::buildUrl('blog/read', ['id' => 5, 'name' => 'thinkphp']);
~~~
å¦ææ们å¨æ³¨åè·¯ç±çæ¶åæå®äºè·¯ç±æ è¯
~~~
Route::rule('blog/:id','blog/read')->name('blog_read');
~~~
é£ä¹å¿
须使ç¨è·¯ç±æ è¯æ¥çæURLå°å
~~~
Route::buildUrl('blog_read', ['id' => 5, 'name' => 'thinkphp']);
~~~
以ä¸æ¹æ³é½ä¼çæä¸é¢çURLå°åï¼
~~~
/index.php/blog/5/name/thinkphp.html
~~~
å¦æä½ çç¯å¢æ¯æREWRITEï¼é£ä¹çæçURLå°åä¼å为ï¼
~~~
/blog/5/name/thinkphp.html
~~~
å¦æä½ é
ç½®äºï¼
~~~
'url_common_param'=>true
~~~
é£ä¹çæçURLå°åå为ï¼
~~~
/index.php/blog/5.html?name=thinkphp
~~~
ä¸å¨è·¯ç±è§åéé¢çåéä¼ç´æ¥ä½¿ç¨æ®éURLåæ°çæ¹å¼ã
> éè¦æ³¨æçæ¯ï¼URLå°åçæä¸ä¼æ£æµè·¯ç±çæææ§ï¼åªæ¯æç
§ç»å®çè·¯ç±å°åååæ°çæ符åæ¡ä»¶çè·¯ç±è§åã
## 使ç¨è·¯ç±å°å
æ们ä¹å¯ä»¥ç´æ¥ä½¿ç¨è·¯ç±å°åæ¥çæURLï¼ä¾å¦ï¼
æ们å®ä¹äºè·¯ç±è§åå¦ä¸ï¼
~~~
Route::get('blog/:id' , 'blog/read');
~~~
å¯ä»¥ä½¿ç¨ä¸é¢çæ¹å¼ç´æ¥ä½¿ç¨è·¯ç±è§åçæURLå°åï¼
~~~
Route::buildUrl('/blog/5');
~~~
é£ä¹èªå¨çæçURLå°åå为ï¼
~~~
/index.php/blog/5.html
~~~
## URLåç¼
é»è®¤æ
åµä¸ï¼ç³»ç»ä¼èªå¨è¯»å`url_html_suffix`é
ç½®åæ°ä½ä¸ºURLåç¼ï¼é»è®¤ä¸ºhtmlï¼ï¼å¦ææ们设置äºï¼
~~~
'url_html_suffix' => 'shtml'
~~~
é£ä¹èªå¨çæçURLå°åå为ï¼
~~~
/index.php/blog/5.shtml
~~~
å¦ææ们设置äºå¤ä¸ªURLåç¼æ¯æ
~~~
'url_html_suffix' => 'html|shtml'
~~~
åä¼å第ä¸ä¸ªåç¼æ¥çæURLå°åï¼æ以èªå¨çæçURLå°åè¿æ¯ï¼
~~~
/index.php/blog/5.html
~~~
å¦æä½ å¸ææå®URLåç¼çæï¼åå¯ä»¥ä½¿ç¨ï¼
~~~
Route::buildUrl('blog/read', ['id'=>5])->suffix('shtml');
~~~
## ååçæ
é»è®¤çæçURLå°åæ¯ä¸å¸¦ååçï¼å¦æä½ éç¨äºå¤ååé¨ç½²æè
å¸æçæ带æååçURLå°åçè¯ï¼å°±éè¦ä¼ å
¥ç¬¬å个åæ°ï¼è¯¥åæ°æ两ç§ç¨æ³ï¼
### èªå¨çæåå
~~~
Route::buildUrl('index/blog/read', ['id'=>5])
->suffix('shtml')
->domain(true);
~~~
第å个åæ°ä¼ å
¥`true`çè¯ï¼è¡¨ç¤ºèªå¨çæååï¼å¦æä½ å¼å¯äº`url_domain_deploy`è¿ä¼èªå¨è¯å«å¹é
å½åURLè§åçååã
ä¾å¦ï¼æ们注åäºååè·¯ç±ä¿¡æ¯å¦ä¸ï¼
~~~
Route::domain('blog','index/blog');
~~~
é£ä¹ä¸é¢çURLå°åçæ为ï¼
~~~
http://blog.thinkphp.cn/read/id/5.shtml
~~~
### æå®åå
ä½ ä¹å¯ä»¥æ¾å¼ä¼ å
¥éè¦çæå°åçååï¼ä¾å¦ï¼
~~~
Route::buildUrl('blog/read', ['id'=>5])->domain('blog');
~~~
æè
ä¼ å
¥å®æ´çåå
~~~
Route::buildUrl('index/blog/read', ['id'=>5])->domain('blog.thinkphp.cn');
~~~
çæçURLå°å为ï¼
~~~
http://blog.thinkphp.cn/read/id/5.shtml
~~~
ä¹å¯ä»¥ç´æ¥å¨ç¬¬ä¸ä¸ªåæ°éé¢ä¼ å
¥ååï¼ä¾å¦ï¼
~~~
Route::buildUrl('index/blog/read@blog', ['id'=>5]);
Route::buildUrl('index/blog/read@blog.thinkphp.cn', ['id'=>5]);
~~~
## çæéç¹
æ¯æçæURLçéç¹ï¼å¯ä»¥ç´æ¥å¨URLå°ååæ°ä¸ä½¿ç¨ï¼
~~~
Route::buildUrl('index/blog/read#anchor@blog', ['id'=>5]);
~~~
> éç¹åååä¸èµ·ä½¿ç¨çæ¶åï¼æ³¨æéç¹å¨åé¢ï¼ååå¨åé¢ã
çæçURLå°å为ï¼
~~~
http://blog.thinkphp.cn/read/id/5.html#anchor
~~~
## å ä¸å
¥å£æ件
ææ¶åæ们çæçURLå°åå¯è½éè¦å ä¸`index.php`æè
å»æ`index.php`ï¼å¤§å¤æ°æ¶åç³»ç»ä¼èªå¨å¤æï¼å¦æåç°èªå¨çæçå°åæé®é¢ï¼å¯ä»¥ä½¿ç¨ä¸é¢çæ¹æ³ï¼
~~~
Route::buildUrl('index/blog/read', ['id'=>5])->root('/index.php');
~~~
## å©æå½æ°
ç³»ç»æä¾äºä¸ä¸ª`url`å©æå½æ°ç¨äºå®æç¸åçåè½ï¼ä¾å¦ï¼
~~~
url('index/blog/read', ['id'=>5])
->suffix('html')
->domain(true)
->root('/index.php');
~~~
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- URL访é®
- 容å¨åä¾èµæ³¨å ¥
- æå¡
- é¨é¢
- ä¸é´ä»¶
- äºä»¶
- è·¯ç±
- è·¯ç±å®ä¹
- åéè§å
- è·¯ç±å°å
- è·¯ç±åæ°
- è·¯ç±ä¸é´ä»¶
- è·¯ç±åç»
- èµæºè·¯ç±
- 注解路ç±
- è·¯ç±ç»å®
- ååè·¯ç±
- MISSè·¯ç±
- è·¨å请æ±
- URLçæ
- æ§å¶å¨
- æ§å¶å¨å®ä¹
- åºç¡æ§å¶å¨
- 空æ§å¶å¨
- èµæºæ§å¶å¨
- æ§å¶å¨ä¸é´ä»¶
- 请æ±
- 请æ±å¯¹è±¡
- 请æ±ä¿¡æ¯
- è¾å ¥åé
- 请æ±ç±»å
- HTTP头信æ¯
- 伪éæ
- åæ°ç»å®
- 请æ±ç¼å
- ååº
- ååºè¾åº
- ååºåæ°
- éå®å
- æ件ä¸è½½
- æ°æ®åº
- è¿æ¥æ°æ®åº
- åå¸å¼æ°æ®åº
- æ¥è¯¢æé å¨
- æ¥è¯¢æ°æ®
- æ·»å æ°æ®
- æ´æ°æ°æ®
- å é¤æ°æ®
- æ¥è¯¢è¡¨è¾¾å¼
- é¾å¼æä½
- where
- table
- alias
- field
- strict
- limit
- page
- order
- group
- having
- join
- union
- distinct
- lock
- cache
- comment
- fetchSql
- force
- partition
- failException
- sequence
- replace
- extra
- duplicate
- procedure
- èåæ¥è¯¢
- å页æ¥è¯¢
- æ¶é´æ¥è¯¢
- é«çº§æ¥è¯¢
- è§å¾æ¥è¯¢
- JSONå段
- åæ¥è¯¢
- åçæ¥è¯¢
- æ¥è¯¢äºä»¶
- è·åå¨
- äºå¡æä½
- åå¨è¿ç¨
- æ°æ®é
- æ°æ®åºé©±å¨
- 模å
- å®ä¹
- 模åå段
- æ°å¢
- æ´æ°
- å é¤
- æ¥è¯¢
- æ¥è¯¢èå´
- JSONå段
- è·åå¨
- ä¿®æ¹å¨
- æç´¢å¨
- æ°æ®é
- èªå¨æ¶é´æ³
- åªè¯»å段
- 软å é¤
- ç±»å转æ¢
- 模åè¾åº
- 模åäºä»¶
- 模åå ³è
- ä¸å¯¹ä¸å ³è
- ä¸å¯¹å¤å ³è
- è¿ç¨ä¸å¯¹å¤
- è¿ç¨ä¸å¯¹ä¸
- å¤å¯¹å¤å ³è
- å¤æå ³è
- å ³èé¢è½½å ¥
- å ³èç»è®¡
- å ³èè¾åº
- è§å¾
- 模æ¿åé
- è§å¾è¿æ»¤
- 模æ¿æ¸²æ
- 模æ¿å¼æ
- è§å¾é©±å¨
- é误åæ¥å¿
- å¼å¸¸å¤ç
- æ¥å¿å¤ç
- è°è¯
- è°è¯æ¨¡å¼
- Traceè°è¯
- SQLè°è¯
- åéè°è¯
- è¿ç¨è°è¯
- éªè¯
- éªè¯å¨
- éªè¯è§å
- é误信æ¯
- éªè¯åºæ¯
- è·¯ç±éªè¯
- å ç½®è§å
- 表å令ç
- 注解éªè¯
- æ项
- ç¼å
- Session
- Cookie
- å¤è¯è¨
- ä¸ä¼
- å½ä»¤è¡
- å¯å¨å ç½®æå¡å¨
- æ¥ççæ¬
- èªå¨çæåºç¨ç®å½
- å建类åºæ件
- æ¸ é¤ç¼åæ件
- çææ°æ®è¡¨å段ç¼å
- çæè·¯ç±æ å°ç¼å
- è¾åºè·¯ç±å®ä¹
- èªå®ä¹æ令
- æ©å±åº
- æ°æ®åºè¿ç§»å·¥å ·
- Workerman
- thinkå©æå·¥å ·åº
- éªè¯ç
- Swoole
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿