要启用 URL 路由,要求服务器必须支持 URL 重写或 PATHINFO 路径变量。前者在 apache、lighttpd、nginx、IIS 等 Web 服务器环境中都可以支持,后者则支持更多的服务器环境。
在本教程中,我们假定读者使用 APM Express,所以我们现在的修改都针对 APM Express。
找到 APM Express 的安装目录,打开 etc/httpd.conf.template 文件(注意,不是 httpd.conf),找到下列代码:
<VirtualHost *> DocumentRoot "d:/www" ServerName 127.0.0.1 <Directory "d:/www"> Options Indexes FollowSymLinks IndexOptions FancyIndexing FoldersFirst NameWidth=* VersionSort XHTML AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
改为:
<VirtualHost *> DocumentRoot "d:/www/todo/public" ServerName 127.0.0.1 <Directory "d:/www/toto/public"> Options Indexes FollowSymLinks IndexOptions FancyIndexing FoldersFirst NameWidth=* VersionSort XHTML AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
这里的修改假定 todo 应用位于 d:/www/todo 目录中,请根据实际情况修改
再查找:
#LoadModule rewrite_module modules/mod_rewrite.so
改为:
LoadModule rewrite_module modules/mod_rewrite.so
最后一步,将 d:/www/todo 目录中的 _htaccess 改名或复制为 .htaccess。这个操作必须在命令行窗口中进行:
在命令行窗口中创建 .htaccess
QeePHP 虽然也需要 .htaccess,但改变 URL 样式却不需要修改这个文件。而且 QeePHP 附带的 .htaccess 也只有区区数行代码:
RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1
修改 configs/environments.yaml 文件,找到:
# url 参数的传递模式,可以是标准、PATHINFO、URL 重写等模式, # 分别对应 standard、pathinfo、rewrite 设置值 dispatcher_url_mode: standard
改为:
dispatcher_url_mode: rewrite
现在重新启动 APM Express,再通过浏览器访问 http://localhost/ 应该看到 todo 应用的页面。如果出错,请仔细核对上述步骤。
重启 APM Express 后访问 todo 应用
仔细观察上图中地址栏的中地址,就会发现 URL 已经变成了 http://localhost/users/login。而这种改变没有修改一行代码!
试用一下 todo 的各项功能,会发现这些功能完全正常,而 URL 地址已经变短变美观了。