启用 URL 路由
要启用 URL 路由,要求服务器必须支持 URL 重写或 PATHINFO 路径变量。前者在 apache、lighttpd、nginx、IIS 等 Web 服务器环境中都可以支持,后者则支持更多的服务器环境。
配置服务器环境
找到apache服务器配置文件 httpd.conf,找到如下代码添加注释部分,或者覆盖:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
 | <VirtualHost *>     DocumentRoot "d:/www"     ServerName 127.0.0.1       <Directory "d:/www">         Options Indexes FollowSymLinks         IndexOptions FancyIndexing FoldersFirst NameWidth=* VersionSort XHTML           #开启rewrite 路由重写         AllowOverride All           Order allow,deny         Allow from all     </Directory> </VirtualHost>
 | 
再查找:
| 1
 | #LoadModule rewrite_module modules/mod_rewrite.so
 | 
改为:
| 1
 | LoadModule rewrite_module modules/mod_rewrite.so
 | 
最后一步,将 d:/www/todo 目录中的 _htaccess 改名或复制为 .htaccess。这个操作必须在命令行窗口中进行:

QeePHP 虽然也需要 .htaccess,但改变 URL 样式却不需要修改这个文件。而且 QeePHP 附带的 .htaccess 也只有区区舒航代码:
| 1 2 3 4 5
 | RewriteEngine on   RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1
 | 
修改应用程序设置
修改 configs/environments.yaml 文件,找到:
| 1 2 3
 | # url 参数的传递模式,可以是标准、PATHINFO、URL 重写等模式, # 分别对应 standard、pathinfo、rewrite 设置值 dispatcher_url_mode: standard
 | 
改为:
| 1
 | dispatcher_url_mode: rewrite
 | 
然后重启 Apache 服务器,再通过浏览器访问 http://localhost/todo/public/ 应该看到 todo 应用的页面。如果出错,请仔细核对上述步骤。

仔细观察上图中地址栏的中地址,就会发现 URL 已经变成了 http://localhost/todo/public/users/login。而这种改变没有修改一行代码!