Страница возвращает ошибку 500 после перенаправления https в Google, но работает в браузере

Я пытаюсь заставить Google сканировать мой сайт, но консоль поиска говорит, что сайт возвращает ошибку 500. Хотя он работает как положено в любом браузере. Я также заметил на Facebook, когда я набираю URL-адрес в чате, карта предварительного просмотра показывает Ой, что-то пошло не так.

Я прогнал его через httpstatus.io, и он это подтверждает. Страница выдает ошибку 500 после перенаправления https.

Status Code,Scheme,Host,Path
301,http://,rfa.is,
500,https://,rfa.is,/

У меня другие сайты настраиваются так же без проблем.

Это файл .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Force SSL
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    # Remove public folder form URL
    RewriteCond %{THE_REQUEST} !/storage/ [NC]
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

URL-адрес: https://rfa.is.

Любые идеи?


person Lulli240    schedule 15.07.2020    source источник
comment
Допускается ли пробел в ^ и https://, например ^ https://...?   -  person Umair Khan    schedule 15.07.2020
comment
вы проверяли логи апача?   -  person hmg    schedule 15.07.2020
comment
@UmairKhan Я пробовал без пробела, а потом он просто возвращает ошибку 500 перед перенаправлением   -  person Lulli240    schedule 15.07.2020
comment
@Lulli240 попробуйте этот сайт, чтобы найти свою ошибку: htaccess.madewithlove.be Результат для вашей части кода: htaccess.madewithlove.be?share=cbaea258-b12a-52ac-9b11- d6b881ae   -  person Inazo    schedule 15.07.2020
comment
@hmg Веб-сайт находится на хостинге, и я не думаю, что у меня есть к нему доступ. Но у меня есть другой сайт на том же сервере и с этим сайтом проблем нет.   -  person Lulli240    schedule 15.07.2020
comment
@Inazo Я просмотрел это, и все зеленое: htaccess.madewithlove. быть?share=c2708a6a-42fe-535b-8bce-1b468d29   -  person Lulli240    schedule 15.07.2020
comment
Я думаю, что проблема не в .htaccess. Перенаправление отлично работает в браузере, но если вы попытаетесь получить к нему доступ с помощью инструмента командной строки, такого как curl в терминале Linux, версия https выдаст ошибку 500. Перенаправление HTTP на HTTPS curl -IL http://rfa.is/ и прямое HTTPS curl -IL https://rfa.is/ создает HTTP/2 500 в версии HTTPS. Могут быть некоторые ограничения на стороне сервера, чтобы обслуживать только определенные типы браузеров.   -  person Umair Khan    schedule 16.07.2020


Ответы (1)


Я думаю, что проблема не в .htaccess. Перенаправление отлично работает в браузере, но если вы попытаетесь получить к нему доступ с помощью инструмента командной строки, такого как curl в терминале Linux, версия https выдаст ошибку 500. Перенаправление HTTP на HTTPS curl -IL http://rfa.is/ и прямое HTTPS curl -IL https://rfa.is/ создает HTTP/2 500 в версии HTTPS. Могут быть некоторые ограничения на стороне сервера, чтобы обслуживать только определенные типы браузеров.

Процитировал мой комментарий.

О, кажется, я нашел причину.

Если указать в запросе заголовок accept-language, независимо от его значения, результатом будет 200 OK.

curl -IL 'http://rfa.is/' -H 'accept-language: en-US,en;q=0.9', curl -IL 'http://rfa.is/' -H 'accept-language: ;' и curl 'https://rfa.is/' -H 'accept-language: ;' работают одинаково хорошо.

Те же результаты с GuzzleHttp с PHP.

Вывод. Кажется, на стороне сервера есть какое-то ограничение/настройка, которая генерирует 500 Internal Server Error, если заголовок accept-language отсутствует в запросе.

person Umair Khan    schedule 16.07.2020