Мы используем mod_rewrite с mod_proxy для прокси-запросов сканерами и ботами к prerender.io. В настоящее время служба предварительной визуализации не поддерживает https, но поддерживает только сайт моих клиентов, поэтому прокси-сервер находится с https на http. Раньше это работало нормально, но с тех пор, как мы обновились до Apache 2.4.29, в URL-адресах прокси всегда добавлен порт 443.
Old: https://www.example.com/news/something -> http://service.prerender.io/https://www.example.com/news/something
New: https://www.example.com/news/something -> http://service.prerender.io:443/https://www.example.com/news/something
Как я могу вернуться к старому поведению, не возвращая apache?
Вот код .htaccess:
RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|baiduspider|rogerbot|embedly|quora\ link\ preview|showyoubot|outbrain [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Yandex(Bot|Images|Video|Media) [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteRule ^(.*)$ http://service.prerender.io/https://%{HTTP_HOST}$1 [P,L]
Ответ очень прост и прост, возможно, поэтому я его пропустил.
Просто добавьте порт 80 к URL-адресу прокси:
RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|baiduspider|rogerbot|embedly|quora\ link\ preview|showyoubot|outbrain [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Yandex(Bot|Images|Video|Media) [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteRule ^(.*)$ http://service.prerender.io:80/https://%{HTTP_HOST}$1 [P,L]
Я не знаю каких-либо различий между Apache 2.4.29 и Apache 2.2 в этом отношении, однако, если вы обновляетесь с Apache 2.0 (или даже раньше?), То есть изменения в значениях по умолчанию.
Если вы явно не укажете номер порта в URL-адресе замены, то Apache 2.2+ получит номер порта из ServerName
, UseCanonicalName
и UseCanonicalPhysicalPort
директивы и / или запрос. В Apache 2.0 дефолт для UserCanonicalName
был On
(UseCanonicalPhysicalPort
был представлен только в Apache 2.2) - это изменилось на Off
в более поздних версиях Apache - поэтому, если вы явно не установите это, вместо этого будет использоваться порт из запроса.
Итак, если вы заметили разницу после обновления сервера, я бы заподозрил изменение одной из этих директив, если вы не обновляетесь с очень старой версии Apache.