如何强制表单仅通过 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 搜索表单有几个优点:
- 它可以限制为单个站点或一组站点。
- 您可以使用自定义颜色和徽标更改搜索结果页面的外观。
- 您可以从搜索结果中分享广告收入。
我有一个简单的搜索表单,我希望在单击按钮时将其重定向到 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 上搜索 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 搜索表单有几个优点:
- 它可以限制为单个站点或一组站点。
- 您可以使用自定义颜色和徽标更改搜索结果页面的外观。
- 您可以从搜索结果中分享广告收入。