如果你在火狐浏览器的地址栏里输入关键词后,发现它自动跳出并附加上一大堆像 q=、sourceid=firefox、search?q= 这样的前缀,那你并不孤独。这其实是火狐的默认行为在作怪——它把你的非网址输入直接当作搜索请求,然后自动注入搜索引擎模板里的参数。想彻底解决这个问题,光关一两个开关可不够,得从触发逻辑、参数来源和渲染路径三个层面同时下手。接下来,我们一步步拆解。
禁用 keyword.enabled 和 browser.urlbar.suggest.searches
这是最直接的开关——关掉它们,地址栏就不再随意把你的输入当作搜索发起点,自然也就不会拼接前缀或跳转到搜索引擎。
keyword.enabled控制的是“关键词直达”功能。比如,你输入github firefox,它就会直接跳转到github的搜索页面。把它设为false后,所有非完整URL的输入,都只会触发本地匹配(历史记录或书签),或者直接报错。browser.urlbar.suggest.searches决定是否将搜索行为存储到专用的搜索历史库。设为false可以阻止后续联想中间出现那些带着前缀的历史条目。- 这两项必须同时设为
false。只关一个,仍然可能残留跳转或前缀注入的现象。 - 修改后需要重启Firefox才能生效,不支持热更新。
删干净默认搜索引擎URL模板里的冗余参数
即便禁用了搜索触发,Firefox仍然会从当前默认搜索引擎的定义中读取URL模板。如果模板里写着https://www.google.com/search?q={searchTerms}&ie=utf-8&sourceid=firefox,那么只要你触发一次搜索(比如手动右键选择“使用Google搜索”),像&ie=utf-8&sourceid=firefox这样的参数就依然会混进来。
- 访问
about:preferences#search,进入“管理搜索引擎”,删除当前的默认引擎(比如Google)。 - 然后通过支持OpenSearch的网站(比如php.cn的搜索框)重新添加。添加后,右键编辑这个引擎。
- 把“搜索URL”字段中,
{searchTerms}前后的所有固定参数全部删掉,只留下基础路径和这个占位符。例如:https://www.php.cn/link/cb6bea847b2e98974d305392493349f3/?q={searchTerms}。 - 注意:协议和域名不能留空,否则编辑保存会失败。
{searchTerms}必须保留,且大小写必须严格匹配。
关闭 one-off searches(一次性搜索按钮)
地址栏下方那一排搜索引擎图标(Google、Bing、百度等)就是“一次性搜索按钮”。它们可不只是视觉元素——当你在地址栏输入内容时,Firefox会根据光标位置或回车前的焦点,自动选择一个引擎,并注入它专属的前缀(比如Bing会带 q=,DuckDuckGo除了 q= 还会加上 kl=wt-wt)。
- 在
about:config中搜索browser.urlbar.oneOffSearches。 - 双击设为
false,地址栏下方的引擎图标区会立刻消失,相关的前缀注入逻辑也被一并停用。 - 这个设置不影响你手动在搜索框里搜索,它只干掉了地址栏联动的快捷跳转路径。
- 如果以后想恢复,改回
true就行,无需重装或重置配置。
检查地址栏建议总开关和数据源是否全关
有时候,前缀看似消失了,但输入后仍然跳转。这往往是因为“地址栏显示搜索建议”这个总开关还开着,或者某个搜索引擎的“提供搜索建议”没有关严——Firefox会悄悄调用远程API来补全,返回的响应里就自带前缀参数。
- 进入
about:preferences#search,滚动到底部“地址栏搜索”区域。 - 确认“在地址栏结果中显示搜索建议”已关闭(这是总开关)。
- 逐个点击默认搜索引擎下方各引擎右侧的开关,确保“提供搜索建议”全部为灰色关闭状态。
- 同步取消勾选“浏览历史”“书签”“打开的标签页”“搜索历史”这四项——哪怕只留一项开着,都可能导致某条带前缀的历史记录重新出现在下拉列表里。
真正棘手的是组合效应:比如 keyword.enabled 关掉了,但 browser.urlbar.suggest.searches 没关,旧搜索历史还在;或者URL模板清干净了,但 one-off searches 还开着,一按回车又切到Bing并塞进 q=。每一步都得对齐,少一个环节,前缀就可能换个姿势卷土重来。
