本章節:詳細介紹thinkphp URL規則、URL偽靜態、URL路由、URL重寫、URL生成
一、URL規則
1、默認是區分大小寫的
2、如果我們不想區分大小寫可以改配置文件
'URL_CASE_INSENSITIVE'=>true,//url不區分大小寫
*模塊命名太長的情況:
A、如果模塊名為 UserGroupAction,復雜模塊(一般是IndexAction)
那麼url找模塊就必要要寫成
http://localhost/thinkphp4/index.php/user_group/index
B、如果'URL_CASE_INSENSITIVE'=>false(區分大小寫的情況可以訪問)
那麼url也可以寫為
http://localhost/thinkphp4/index.php/UserGroup/index
二、URL偽靜態(tp默認支持偽靜態)
http://localhost/thinkphp4/index.php/UserGroup/index.xml
*默認pdo、html、xml...都是支持的,如果要限制加個配置就行
'URL_HTML_SUFFIX'=>'html|shtml|xml',//限制偽靜態的後綴
三、URL路由
1、啟動路由
要在配置文件中開啟路由支持
'URL_ROUTER_ON' => true, //開啟路由
2、使用路由
1.規則表達式配置路由
'URL_ROUTER_ON' => true, //開啟路由
'URL_ROUTE_RULES' => array(
'my'=>'Index/index',//靜態地址路由 訪問:http://localhost/thinkphp/index.php/my
':id/:num'=>'Index/index',/*後面的數字值隨便寫,字母也行
動態地址路由 訪問:http://localhost/thinkphp/index.php/10/200
可以再模塊控制器中用get方式傳值 或 獲取
echo $_GET['id'];
echo $_GET['num'];
*/
'my/:num'=>'Index/index', //動靜混合地址路由 http://localhost/thinkphp/index.php/my/200
'year/:year/:month/:date'=>'Index/index',//動態和靜態混合地址路由: http://localhost/thinkphp/index.php/year/2014/12/21
'year/:year\d/:month\d/:date\d'=>'Index/index',//動態和靜態混合地址路由 --加上 \d代表類型只能是數字
'my/:id$'=>'Index/index',// 加上$說明地址中只能是 my/1000 後面不能有其他內容了
);
2.正則表達式配置路由
//http://localhost/thinkphp/index.php/year/2014/12/21
'/^year\/(\d{4})\/(\d{2})\/(\d{2})/'=>'Index/index?year=:1&month=:2&date=:3'
3、注意事項:
1.越復雜的路由越往前面放
'URL_ROUTE_RULES'=>array(
'my/:year/:month:/:day'=>'Index/day', *復雜的路由放在前面,放後面就不會執行
'my/:id\d'=>'Index/index',
'my/:name'=>'Index/index',
)
2.可以使用$作為完全匹配的路由規則(不管復雜否,都會匹配所有正則)
'URL_ROUTE_RULES'=>array(
'my/:id\d$'=>'Index/index',
'my/:name$'=>'Index/index',
'my/:year/:month:/:day$'=>'Index/day',
),
3.用正則匹配的方式
'URL_ROUTE_RULES'=>array(
'/^my\/(\d+)$/'=>'Index/index?id=:1',
'/^my\/(\w+)$/'=>'Index/index?name=:1',
'/^my\/(\d{4})\/(\d{2})\/(\d{2})$/'=>'Index/day?year=:1&month=:2&day=:3',
),
四、URL重寫
比如:http://localhost/thinkphp/index.php/Index/index.html/t/my ---- 不想讓index.php出現
下面是Apache的配置過程,可以參考下:
1、httpd.conf配置文件中加載了mod_rewrite.so模塊
2、AllowOverride None 將None改為 All
3、確保URL_MODEL設置為2 (該步驟省略)
4、把下面的內容保存為.htaccess文件放到入口文件的同級目錄下
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
重啟Apache之後,原來的
就可以通過訪問
http://localhost/thinkphp/Index/index.html/t/my --簡化了URL地址,對SEO的支持度好點
五、URL生成(手冊有詳細介紹)
public function url(){
echo U('Index/add'); // 生成Index模塊的add操作的URL地址
///thinkphp/index.php/index/add
}
上一篇http://qdxinbj8.2cto.com/index.php?m=content&c=content&a=public_preview&steps=1&catid=75&id=363637