Artyom觉得URL分为三个组成部分:
Script_Name / Path_Info ? Query_String
比方以下的:
/foo/bar.php/test?x=10
Script_Name: /foo/bar.php
Path_Info: test
Query_String: x=10
这三个都是CGI变量。
CppCMS中提供了方法定义Script_Name, 比方:
mapper().root("/hello");
也就是全部的URL都应该以/hello开头,/hello就是Script_Name变量的值。
对于mapper(),我眼下知道的是它和dispatcher作用相反,可是除了上面的root外,我还没实用过,不是非常清楚它的详细功能。
经常使用的是dispatcher,它能够使用正則表達式去匹配URL的Path_Info部分,假设匹配成功则将请求转发给详细的函数去运行,而且能够利用正則表達式提取URL中的部分数据,作为參数传递个处理函数。这个处理函数CppCMS称作为action。
dispatcher假设接受的正則表達式为"",则代表凡是没有匹配的URL,都会调用它的action.
dispatcher().assign("",&hello::welcome,this);
详细能够參考文档:
http://cppcms.com/wikipp/en/page/cppcms_1x_tut_url_mapping#Actions