干净漂亮的URL(Clean URLs或Pretty URLs)是指不包含查询字符串(如?
和&
)的URL,通常更易于阅读和记忆,对SEO也更友好。在Yii框架中,这主要通过URL管理组件和URL重写规则实现。
在Yii应用的配置文件中(通常是config/web.php
),配置urlManager
组件:
'components' => [
'urlManager' => [
'enablePrettyUrl' => true, // 启用漂亮URL
'showScriptName' => false, // 隐藏入口脚本名(如index.php)
'rules' => [
// 自定义URL规则
],
],
// 其他组件...
],
在项目根目录创建或修改.htaccess
文件:
RewriteEngine on
# 如果请求的不是真实存在的文件或目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将请求重定向到入口脚本
RewriteRule . index.php
确保Apache已启用mod_rewrite
模块。
在Nginx配置中添加:
location / {
try_files $uri $uri/ /index.php?$args;
}
在urlManager
的rules
数组中定义自定义规则:
'rules' => [
'posts' => 'post/index',
'post/<id:\d+>' => 'post/view',
'post/<slug>' => 'post/view',
'about' => 'site/about',
],
mod_rewrite
,Nginx配置正确Url::to()
方法生成URL,检查规则优先级生成漂亮URL:
use yii\helpers\Url;
// 生成URL
$url = Url::to(['post/view', 'id' => 100]);
// 输出类似 "/post/100"
在视图中创建链接:
<?= \yii\helpers\Html::a('查看文章', ['post/view', 'id' => 100]) ?>
通过以上配置和方法,Yii应用可以实现干净、漂亮的URL结构,提升用户体验和SEO效果。
没有搜到相关的文章