You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii1.1中使用urlManager重定向URL的配置问题

Yii1.1 URL重定向问题解决

核心问题

URL中的#是锚点(fragment),浏览器不会将锚点部分发送到服务器,你的Yii后端根本接收不到#/[string]这部分内容,所以配置的urlManager规则自然无法生效。

解决方案

方案1:替换锚点为合法路径字符(推荐服务器端处理)

把URL中的#换成服务器能识别的字符(比如/、自定义标识等),再修改urlManager规则:

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName'=>false,
    'rules'=>array(
        // 对应 /info/[string] 跳转至 /site/info?value=[string]
        'info/<value:\w+>' => 'site/info',
        // 若要保留中间分隔标识,可改为如下写法
        // 'info/detail/<value:\w+>' => 'site/info',
    ),
)

方案2:前端JS处理(仅当必须保留#时使用)

如果一定要保留#结构,只能通过前端JS捕获锚点内容后跳转——只有前端能获取到锚点信息。在/info页面中添加以下代码:

window.addEventListener('load', function() {
    const hashContent = window.location.hash;
    // 匹配 #/[string] 格式的锚点
    if (hashContent.startsWith('#/')) {
        const value = hashContent.slice(2);
        // 跳转时编码参数,避免特殊字符引发问题
        window.location.href = '/site/info?value=' + encodeURIComponent(value);
    }
});

内容的提问来源于stack exchange,提问作者Andrew Sparrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 08:43:07