启用 URL 路由

启用 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。而这种改变没有修改一行代码!