Почему я должен явно произвести HTTP-заголовок для IIS, но не Apache?

Согласитесь с приведенным выше решением от @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>
6
задан Community 23 May 2017 в 11:48
поделиться

1 ответ

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/;
14
ответ дан 8 December 2019 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: