Проверка 301 http-ответа с помощью curl

#php #symfony #http #curl

#php #symfony #http #curl

Вопрос:

Я переношу веб-сайт. И мне нужно выполнить миграцию более 600 старых URL-адресов на новый тип URL-адресов с маршрутизацией symfony и постоянным перенаправлением 301.

пример одного из моих URL:

 redirect_test-url:
    path: /test-url
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: /category/test-url
        permanent: true 
  

Перенаправление, похоже, работает. Но мне нужно быть уверенным, что все мои старые URL перенаправлены с помощью перенаправления 301.
Я думаю, что могу создать скрипт с php и curl, чтобы проверить все URL. Но я не знаю, как получить результат curl.

Вот мой запрос curl:

 curl https://local.dev -k 
  

Но мой терминал отправляет мне обратно html.

Как я могу получить ответ кода состояния http, чтобы сохранить его в базе данных?

Ответ №1:

Вы можете сбросить заголовки ответа с -D помощью опции:

 curl -s -D - http://www.martar.fr -o /dev/null
  

Ответ:

 HTTP/1.1 301 Moved Permanently
Date: Fri, 07 Oct 2016 07:50:51 GMT
Server: Apache/2.4.10 (Debian)
Location: https://www.martar.fr/
Content-Length: 309
Content-Type: text/html; charset=iso-8859-1
  

-s предназначен для автоматического режима (ничего не выводить)

Ответ №2:

Я думаю, возможно, вы хотите что-то похожее на это:

 curl -sI https://example.com -w '%{response_code}:%{redirect_url}n' -o /dev/null
  

В качестве бонуса вы получаете как код перенаправления, так и цель перенаправления (если таковая имеется).

Ответ №3:

переменные записи curl в целом чрезвычайно полезны

 curl -sI https://duravit.de -w '%{response_code}:%{redirect_url}:%header{server}n' -o /dev/null
  

https://everything.curl.dev/usingcurl/verbose/writeout#variables