| Yii 中为了美化URL,可以把 |
|
|
| /index.php?r=post/view&id=100 |
|
|
| 转变成下面path的形式: |
|
|
| /index.php/post/100 |
|
|
| Yii的配置中加入: |
|
|
| ``` |
| <?php |
| 'urlManager'=>array( |
| 'urlFormat'=>'path', |
| // 'urlFormat'=>'get', |
| 'urlSuffix' => ".do", |
| // Disable index.php |
| 'showScriptName' => false, |
| // Disable r= routes |
| 'useStrictParsing' => true, |
| // 'urlFormat'=> isset($_GET['sdkVersion']) && ($_GET['sdkVersion'] > '1.0.0') ? 'get' : 'path', |
| 'rules'=>array( |
| '<controller:\w+>/<id:\d+>'=>'<controller>/view', |
| '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', |
| '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', |
| ), |
| ), |
| ``` |
|
|
|
|
|
|
|
|
| 美化后的路径仍然包含index.php,不够优雅,所以需要去掉,apache 和 nginx中都有rewrite的实现,网上很多,不再重复。 |
|
|
| 为了调试便捷,比如本人,基本不在开发机上部署apache、nginx这些。而是直接用PHP 5.4加入的内建Web Server,启动命令: |
|
|
| php -S 127.0.0.1:80 |
|
|
| 要隐藏index.php 这个,就需要用到 URL rewrite了,PHP内建webserver没这个功能,却也给我们提供了技巧, |
|
|
|
|
| 比如我的Yii在appcall子目录中,所以在appcall下面创建 route.php,内容如下: |
|
|
| ~~~ |
| cat appcall/route.php |
| <?php |
| if (strpos($_SERVER['REQUEST_URI'], '/appcall/') === false) { |
| return false; |
| } else { |
| include __DIR__ . '/index.php'; |
| } |
| ~~~ |
|
|
| 注意启动命令后面要加上这个 route.php: |
|
|
| php -S 127.0.0.1:80 appcall/route.php |
|
|
| OK,这样就满足我们想要的了。 |