
在 Yii 2 启用 Pretty URL 的项目中,直接使用原生 HTML 表单并设置相对路径 action 会导致提交被路由系统拦截而跳转至首页;需显式指向 index.php 入口文件或采用 URL 重写兼容写法。
在 yii 2 框架中启用 pretty url 的项目中,直接使用原生 html 表单并设置相对路径 action 会导致提交被路由系统拦截而跳转至首页;需显式指向 index.php 入口文件或采用 url 重写兼容写法。
Yii 2 默认开启 Pretty URL(即隐藏 index.php 的美观 URL),这依赖于 Web 服务器(如 Apache/Nginx)的重写规则将请求统一转发至 index.php 入口文件。但当您在表单中使用
? 注意:?r=syllabus%2Flms%2Findex 是 Yii 2 的标准路由参数(r 表示 route),经 URL 编码后对应 syllabus/lms/index 控制器动作。此方式不依赖 Pretty URL 配置,100% 兼容。
⚠️ 替代方案(不推荐用于生产):若坚持使用无扩展名路径,必须确保服务器重写规则能将 /syllabus/lms/index 精确重写为 /index.php?r=syllabus/lms/index。例如 Apache 的 .htaccess 中需包含:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?r=$1 [L,QSA]
但该规则对深层路径(如 /syllabus/lms/index)可能匹配失败,需额外定制,维护成本高。
? 最佳实践建议:
- 在 Yii 2 项目中,优先使用 yii\helpers\Url::to() 生成 URL(即使在纯 PHP 模板中也可通过 Yii::$app->urlManager->createUrl() 构建);
- 若必须脱离框架表单组件,务必使用带 index.php 和 r= 参数的绝对路径,保障可预测性;
- 提交后处理逻辑(如 $_POST 接收)仍可保留原生 PHP 写法,但注意 CSRF 验证缺失风险 —— 建议后续逐步迁移到 Yii 2 的 ActiveForm + Model 验证机制以提升安全性与一致性。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











