在ThinkPHP框架中,路由规则是URL到控制器、方法解析的映射规则,而伪静态则通常是通过Web服务器的重写规则来实现,使URL看起来更加友好、符合SEO规范。以下分别给出ThinkPHP路由规则的使用示例和Apache重写(伪静态)的实现方法。
### ThinkPHP路由规则使用示例
ThinkPHP支持多种路由模式,包括普通模式、模块/控制器/操作模式、资源路由、路由闭包等。这里以最常见的模块/控制器/操作模式为例,给出一个简单的路由定义示例。
在`route/route.php`(或相应的路由配置文件中)配置路由规则:
// 使用路由方法定义
use think\facade\Route;
// 定义GET请求路由规则
Route::get('hello/:name', 'index/hello/index');
// 此时,访问 http://yourdomain.com/hello/world 会解析到 index 模块下的 hello 控制器中的 index 方法,并将 world 作为参数传递给 name
// 定义POST请求路由规则
Route::post('login', 'user/login/doLogin');
// 处理登录逻辑
// 定义资源路由
Route::resource('user', 'User');
// 这会自动注册标准的RESTful路由,如 /user/1 访问到 User 控制器下的 read 方法
### Apache重写(伪静态)实现
Apache服务器中,伪静态通常通过`.htaccess`文件实现。下面是一个基本的`.htaccess`配置示例,用于将ThinkPHP的URL重写为伪静态形式:
apache <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On # 如果请求的是真实存在的文件或目录,则直接访问 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 否则,将请求转发到index.php,由ThinkPHP处理 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
这段代码首先检查请求的文件或目录是否真实存在,如果不存在,则将请求重写为`index.php/请求的URL`,这样ThinkPHP框架就可以接收到请求并解析路由了。
注意:使用`.htaccess`前,请确保你的Apache服务器已经启用了`mod_rewrite`模块,并且你的虚拟主机配置(或全局配置)中`AllowOverride`设置为`All`,以允许`.htaccess`文件生效。
以上就是ThinkPHP路由规则的使用示例和Apache重写(伪静态)的基本实现方法。