如何强制表单仅通过 Google 搜索在特定站点内搜索

How to force the form to search within a specific site only via Google Search

我有一个简单的搜索表单,我希望在单击按钮时将其重定向到 Google 搜索页面以搜索输入。下面的代码有效:

<form role='search' method='get' action='http://www.google.com/search'>
  <input type='search' name='q' />
  <button type='search' value='search'>Search</button>
</form>

但是,我只想搜索特定网站。我尝试修改下面的 name='q' 代码以仅在 w3schools 中搜索(添加 site:w3schools.com),但特定于站点的搜索不起作用:

<input type='search' name='q=site%3Aw3schools.com' />

如何解决这个问题?

<form action="http://www.google.com/search" method="get">
   <input type="hidden" name="q" value="site:http://yoursite.com">
   <input type="text" name="q" alt="search">
   <input type="submit" value="Search">
</form>

或者,可以通过 JavaScript 执行搜索。此方法也适用于不自动组合多个 GET 参数的搜索引擎,如 Google 那样。

Google

在 Google 上搜索 this:

https://google.com/search?q=site%3Adavid.wolf.gdn
                         &q=software+development

Google 自动将名称为 q 的两个 GET 参数合并为一个,并在搜索栏中显示值:

site:david.wolf.gdn software development

DuckDuckGo

当在 DuckDuckGo 上搜索时,例如 this:

https://duckduckgo.com/?q=site%3Adavid.wolf.gdn
                       &q=software+development

DuckDuckGo 只会使用最后一个值为 q 的 GET 参数。 URL 被修剪为:

https://duckduckgo.com/?q=software+development

并且只会执行对该查询的搜索:

software development

解决方案

对于不提供所描述的更改 GET 参数并将它们组合成单个查询的功能的搜索引擎,您可以使用 JavaScript 构建 URL 和执行重定向:

(function() {
  const form = document.querySelector('form')
  form.onsubmit = function(e) {
    e.preventDefault()
    const q = document.querySelector('input[name="q"]').value
    window.location.href = 'https://duckduckgo.com/?q=site%3Adavid.wolf.gdn+' + q
  }
})()
<form>
  <input type=search name=q id=q placeholder="I am looking for …">
  <label for=q>
        Press enter to search
    </label>
</form>

在上面的代码中,将 david.wolf.gdn 替换为您想要的域名以将搜索结果限制为。

您应该创建一个 Google Programmable Search Engine。 Google 支持使用 Google 在您的站点上增强站点搜索的方法。尝试修改默认 Google 搜索表单有几个优点:

  1. 它可以限制为单个站点或一组站点。
  2. 您可以使用自定义颜色和徽标更改搜索结果页面的外观。
  3. 您可以从搜索结果中分享广告收入。