Согласитесь с приведенным выше решением от @unor, теперь отвечая о корректировке вашего кода.
Пожалуйста, проверьте целевой URL в опубликованном JSON-LD: -
"target":"https:https://example.com/search/key/{search_term_string}",
Удалите двойной https: [ 115]
Также в случае JSON-LD: вы не можете сопоставить значение имени с / {search_term_string}
Правильный путь всегда такой: -
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "[website url]",
"potentialAction": {
"@type": "SearchAction",
"target": "[website search url]={search_term}",
"query-input": "required name=search_term"
}
}
</script>
Микроданные: -
<div itemscope itemtype="http://schema.org/WebSite">
<meta itemprop="url" content="[website url]"/>
<form itemprop="potentialAction" itemscope itemtype="http://schema.org/SearchAction">
<meta itemprop="target" content="[website search url]={search_term}"/>
<input itemprop="query-input" type="text" name="search_term">
<input type="submit">
</form>
</div>
HTTP и CGI являются разными вещами. Модуль CGI Perl называет то, что он делает "HTTP-заголовок", но это - действительно просто заголовок CGI для сервера для договариваний, прежде чем он вернется к клиенту. Они выглядят много подобными, который является, почему люди запутываются и почему документы CGI.pm не помогают путем называния их неправильной вещью.
Apache ремонтирует заголовки CGI для превращения их в HTTP-заголовки, включая добавление строки состояния HTTP и чего-либо еще, в чем это, возможно, нуждалось бы.
Если Вы, веб-сервер не ремонтирует заголовок для Вас, он, вероятно, ожидает "нет - проанализированный заголовок", где Вы берете на себя ответственность за весь заголовок. Чтобы сделать это в CGI.pm, необходимо добавить -nph
опция к Вашему вызову к заголовку, и необходимо сделать полный заголовок сами, включая заголовки такой как Expires
и Last-Modified
. См. документы при Создании Стандартного HTTP-заголовка. Можно включить NPH тремя способами:
use CGI qw(-nph)
CGI::nph(1)
print header( -nph => 1, ...)
Вы используете более старую версию IIS? CGI.pm раньше включал функцию NPH Вас автоматически для IIS, но теперь, когда строка комментируется в источнике в CGI.pm:
# This no longer seems to be necessary
# Turn on NPH scripts by default when running under IIS server!
# $NPH++ if defined($ENV{'SERVER_SOFTWARE'}) && $ENV{'SERVER_SOFTWARE'}=~/IIS/;