FTP команды предназначены для обмена файлами между компьютерами в частной сети или через интернет.

Существует три способа, с помощью которых можно получить доступ к FTP :

Первые два — это простые средства, которые позволяют использовать браузер или клиентское приложение FTP — (например, FTP Voyager ) для подключения к FTP-серверу для обмена файлами. Используя интерфейс командной строки, нужно ввести набор команд для отправки или получения файлов с других компьютеров.

Операционные системы Windows , Macintosh X и Linux имеют встроенные клиенты командной строки, которые могут быть использованы для установления FTP-соединения . Чтобы инициировать соединение в Windows , введите в CMD команды FTP и нажмите Enter .

Команды FTP для командной строки Windows

Команда Описание
! Эта команда служит для перехода между операционной системой и FTP. Для возврата из операционной системы к командной строке FTP используется команда exit.
? Отображение справки для команды.
append Добавление текста в локальный файл.
ascii Переключение в ASCII режим передачи данных.
bell Включает/отключает режим подачи звукового сигнала.
binary Установка режима передачи двоичных файлов.
bye Выход из FTP.
cd Смена текущего каталога.
close Выход из FTP.
delete Удаление файла.
debug Включает/отключает отладочный режим.
dir Выводит список файлов.

dir -C = выводит файлы в расширенном формате.

dir -1 = выводит список файлов в алфавитном порядке.

dir -r = выводит список каталогов в обратном алфавитном порядке.

dir -R = выводит список всех файлов в текущем каталоге и подкаталогах.

dir -S = выводит список файлов в алфавитном порядке.

disconnect выход из FTP.
get Получение файл с удаленного компьютера.
glob Переключает настройки расширения файла. В выключенном состоянии аргументы имен файлов в командах put и get воспринимаются буквально и не расширяются.
hash Включает/отключает вывод на экран знака ‘#’. Когда опция включена, после каждых 1024 байт переданных данных отображается хеш-символ (#).
help Отображает информацию о команде, если команда вводится после help.
lcd Отображает локальный каталог, в котором была запущена команда. Если же после команды lcd указан путь - изменяет текущий локальный каталог.
literal Отправка произвольной строки символов в качестве команды удаленному серверу с ожиданием единственного ответного кода.
ls Эта ftp exe команда выводит файлы удаленного компьютера.
mdelete Удаление нескольких файлов.
mdir Вывод содержимого удаленных каталогов.
mget Получение нескольких файлов.
mkdir Создание каталога на удаленном компьютере.
mls Вывод содержимого нескольких каталогов удаленного компьютера.
mput Отправка нескольких файлов.
open Устанавливает соединение.
prompt Включает/отключает подсказку.
put Отправка одного файла.
pwd Вывод рабочего каталога.
quit Завершение сеанса ftp.
quote Отправка произвольной команды.
recv Получение файла.
remotehelp Получение справки о командах удаленной системы.
rename Переименовывает файл.
rmdir Удаляет каталог на удаленном компьютере.
send Отправка одного файла.
status Отображает текущее состояние включенных и отключенных параметров.
trace Включает трассировку пакетов.
Type Устанавливает тип передачи файлов.
user Отправка сведений о пользователе для входа на сервер.
verbose Включает/ отключает режим информирования.

FTP команды для Windows

FTP параметры для командной строки Windows

Параметры CMD используются для изменения работы команд FTP . Параметр командной строки обычно следует за основной командой FTP через пробел. Вот список часто используемых параметров командной строки FTP для Windows® :

Параметр командной строки Описание
-v Отключение вывода на экран ответов с удаленного сервера.
-n Отключение автоматического входа при начальном подключении.
-i Отключение интерактивных запросов при передаче нескольких
-d Включение отладочного режима, отображает все команды FTP, передаваемые между клиентом и сервером.
-g Отключение расширения файлов, которое разрешает использование подстановочных символов в именах локальных файлов и путей.
-s:filename Задание текстового файла, содержащего команды FTP, которые

будут выполняться автоматически при запуске FTP. Пробелы в этом параметре не допускаются. Используйте этот параметр вместо перенаправления (>).

-a Использование локального интерфейса для привязки соединения.
-w:windowsize Переопределение стандартного размера буфера передачи (65535).
computer Задание имени или IP адреса удаленного узла, к которому необходимо подключиться. Компьютер, если он указан, должен быть последним параметром в строке.


FTP параметры командной строки для Windows

Консольный FTP-клиент , встроенный в Windows и Mac OS X — это надежный инструмент для тестирования, поиска и устранения неисправностей. Изучение приведенных выше cmd ftp команд поможет вам обмениваться файлами между компьютерами без установки дополнительного программного обеспечения.

FTP не является надежным способом обмена конфиденциальной информацией. Из-за ограничений этого протокола организации, как правило, используют для передачи файлов протоколы FTPS и SFTP . Технология управляемой передачи файлов (MFT ) поддерживает эти протоколы безопасности.

Если вы достаточно давно читаете этот блог, то можете помнить о том, как я решил собрать в нем описание популярных (и не очень) сетевых протоколов. Зачем это мне нужно, можно прочитать в статье Достаточно полное описание протокола SMTP . Вот решил пополнить коллекцию протоколом FTP, повсеместно используемым для передачи файлов.

1. Заходим

По традиции, сразу начну с примера:

$ telnet example.ru 21
Trying 192.168.0.1...
Connected to example.ru.
Escape character is "^]".
220-Welcome to Pure-FTPd
You are user number 5 of 100 allowed.
Local time is now 17:41. Server port: 21.
220 You will be disconnected after 15 minutes of inactivity.
USER afiskon
331 User afiskon OK. Password required
PASS lamepassword
230-User afiskon has group access to: coders
230 OK. Current restricted directory is /

FTP-сервер обычно работает на 21 порту. В приведенном примере строки, начинающиеся с цифр, посылаются сервером, остальные — клиентом. Запросы клиента всегда состоят из одной строки формата КОМАНДА [аргументы] , в то время как ответы сервера могут содержать несколько строк.

Первая и последняя строки начинается с трех цифр, представляющих собой код ответа, за которыми идет текстовое описание ответа, отделенное от кода либо пробелом, либо тире. Если в качестве разделителя используется пробел, значит строка является последней в ответе (и, возможно, единственной), иначе — мы получили первую строку многострочного ответа. Где-то мы это уже видели , не так ли?

Существует пять групп ответов сервера:

Как видно из примера, все начинается с посылки сервером кода 220. Затем пользователь должен залогиниться с помощью команд USER и PASS. Если все сделано правильно, на первую сервер ответит кодом 331, а на вторую — 230. Для анонимного входа (если он разрешен настройками сервера), в качестве имени пользователя следует указать «anonymous», а в качестве пароля — свой e-mail. На практике обычно посылается либо пустой e-mail, либо что-то типа [email protected].

Как видно, пароль передается в открытом виде, потому крайне желательно шифровать FTP-соединение с помощью SSL (это называется FTPS — FTP плюс SSL), а еще лучше — передавать файлы по SSH с помощью утилит scp, sftp или WinSCP . Первые две есть в любой unix-системе и используют для передачи файлов одноименные протоколы, работающие поверх SSH. WinSCP написан для Windows и внешне напоминает Total Commander, умеет работать как с устаревшим SCP (Secure Copy), так и SFTP (SSH File Transfer Protocol), появившимся только в SSH-2.

2. Осматриваемся

Но что-то меня не в ту степь понесло. После прохождения аутентификации (надо же, больше не путаю с авторизацией ) FTP-сервер с радостью выполнит наши команды. Вот их список:

Команда Ожидаемый код Описание
DELE 250 Удалить файл
RMD 250 Удалить директорию
CWD 250 Перейти в директорию
MKD 257 Создать директорию
PWD 257 Узнать текущую директорию
QUIT 221 Закончить работу
TYPE 200 Установить тип передачи
PORT 200 Перейти в активный режим
PASV 227 Перейти в пассивный режим
LIST 150, 226 Получить содержимое каталога
RETR 150, 226 Скачать файл
STOR 150, 226 Залить файл
ABOR 426,226 Отменить передачу
RNFR 350 Выбрать файл для переименования
RNTO 250 Переименовать файл

Здесь я перечислил лишь основные команды, которых достаточно для написания полноценного FTP-клиента. Дело в том, что в реальных условиях FTP-серверы очень избирательно относятся к поддержке команд, описанных в RFC959 и RFC3659 . Так что, если мы хотим получить действительно работающее приложение, а не сферического коня в вакууме, придется ограничиться лишь командами из приведенного списка.

Самые простые команды — это QUIT, DELE, MKD, CWD и RMD . Просто командуем и проверяем код, возвращаемый сервером. Если он равен ожидаемому, значит все ОК, если нет — обрабатываем ошибку.

MKD ftp_test
257 "ftp_test" : The directory was successfully created
CWD ftp_test
250 OK. Current directory is /ftp_test
CWD ..
250 OK. Current directory is /
RMD ftp_test
250 The directory was successfully removed

Если бы я писал FTP-клиент, то код, отвечающий за выполнение названных команд, выглядел бы примерно так:

int code;
char * dir;
// ...
if (code = rawcmd(250 , "RMD %s\r \n " , dir) )
printf ("Error: %d\n " , code) ;
else
printf ("All done!\n " ) ;

Чуть сложнее с парсингом ответа сервера на команду PWD :

PWD
257 "/ftp_test" is your current location

Текущая директория передается в единственной (последней?) строке ответа сервера, заключенная в двойные кавычки. Если полное имя текущей директории содержит двойные кавычки, они заменяются на две кавычки:

PWD
257 "/ftp""test" is your current location

Для переименования файлов используется пара команд — RNFR и RNTO :

RNFR old_file.zip
350 Are you kidding?
RNTO new_file.zip
250 Done!

По всей видимости, это такая оптимизация, чтобы буфер, в который сервер читает команды клиента, был порядка максимально допустимой длины полного имени файла, а не в два раза больше. В 1971-м году, когда был создан протокол, это могло быть важно.

Команда TYPE позволяет установить режим передачи файлов. Пример:

TYPE E
200 TYPE is now EBCDIC
TYPE A
200 TYPE is now ASCII
TYPE I
200 TYPE is now 8-bit binary

Насколько я могу судить, сегодня эта команда уже устарела и все данные можно спокойно передавать в бинарном формате (TYPE I). Цитата из Википедии :

Первые компьютеры использовали формат, размером в байт, машинное слово, двойное машинное слово, не кратное 8. Обычно они были кратны шести. Восемь бит в байте было принято при разработке системы машинных команд для IBM System/360. Это стало международным стандартом и с начала 1970-х большинство компьютеров использует байты, состоящие из 8 бит, и машинные слова, кратные 8.

3. Действуем

Особенность протокола FTP — для выполнения команд и передачи файлов используются разные соединения. Это в общем-то нормальное проектное решение. Мы же не знаем, что там в этих файлах записано, а если передавать их вместе с командами, придется как-то кодировать содержимое файла, чтобы отличить его от команд. Зачем увеличивать объем трафика и усложнять протокол, когда можно просто открыть новое соединение и послать файл, как есть?

При установлении нового соединения кто-то должен собственно соединяться, а кто-то соединение принимать. Если клиент открывает порт, а сервер коннектится к нему, режим передачи файла называется активным. В обратном случае — пассивным. За счет того, что многие пользователи Интернета сегодня сидят за NAT, обычно используется пассивный режим. И это не очень хорошо, потому что число портов у сервера ограничено.

Что интересно — существует возможность передавать файлы с одного FTP-сервера на другой напрямую. Но поскольку такая возможность часто использовалась в DDoS-атаках, сейчас она практически везде отключена.

Для перехода в пассивный режим используется команда PASV , для перехода в активный — PORT :

PORT 192,168,10,1,21,133
200 PORT command successful
PASV
227 Entering Passive Mode (192,168,0,1,21,216)

Как несложно догадаться, с помощью цифр кодируется IP-адрес и порт для соединения. Допустим, мы находимся в пассивном режиме и хотим установить соединение для передачи данных:

$ telnet 192.168.0.1 `expr 21 \* 256 + 216`
Trying 192.168.0.1...
Connected to example.ru.
Escape character is "^]".

После чего можем, например, просмотреть содержимое текущего каталога, заюзав команду LIST :

LIST
150 Accepted data connection
226-Options: -a -l
226 5 matches total

Смотрим на вывод telnet:

drwx------ 5 afiskon coders 512 Jul 7 11:35 .
drwx------ 5 afiskon coders 512 Jul 7 11:35 ..
drwxr--r-- 3 afiskon coders 512 Jun 6 14:30 сайт
drwxr-xr-x 2 afiskon coders 1024 Jul 7 00:16 logs
drwxr--r-- 2 afiskon coders 512 Jun 6 14:30 tmp
Connection closed by foreign host.

Абсолютно аналогично происходит скачивание и аплоад файлов, только используются команды RETR {файл} и STOR {файл} соответственно. Команды RETR, STOR и LIST можно прервать в процессе выполнения с помощью команды ABOR , в ответ на которую сервер должен ответить 426 «передача прервана», а затем — 226 «отмена операции произошла успешно».

4. Заключение

На этом я, пожалуй, закончу свое повествование. Получилось 9 Кб текста против 130 Кб RFC959 . По этой статье вполне можно написать несложный FTP клиент или сервер, я проверял! Самое главное — это протестировать его на совместимость с максимально возможным количеством ПО, поскольку, как я уже отмечал, в мире FTP мало кто строго следует RFC. Ну и последнее — помните золотое правило «Be liberal with input, strict with output».

Чаще всего пользователи для обмена в сети файлами небольших размеров используют почту или Скайп. Однако, когда необходимо переслать архив фотографий или фильм, размером в несколько гигабайт, этими сервисами воспользоваться нельзя. Публичный файлообменник тоже создаёт некоторые трудности, например, ожидание таймера и ограничение скорости. Наилучшее решение в таком случае - создать собственный FTP-сервер.

FTP (File Transfer Protocol) - это протокол передачи информации в интернете и локальных компьютерных сетях. Это программа, осуществляющая удалённое подключение к выделенной папке для просмотра и обмена файлами, в том числе больших размеров. Обмен данными возможен от компьютера к удалённому серверу и между другими ФТП-серверами.

Данные передаются без шифрования трафика, поэтому доступ к логинам и паролям легко могут получить злоумышленники. Для безопасной передачи файлов рекомендуется использовать протокол с TLS-защитой - FTPS, шифрующий данные.

Собственный FTP-сервер имеет определённые преимущества:

  • позволяет управлять сервером и его ресурсами;
  • предоставлять пользователям разные права доступа;
  • для него не нужен статический IP-адрес.
  • нет ограничений скорости;
  • отсутствие оплаты хостеру за его размещение;

В соответствии с тем, какой сложности будет доступ, выбирается программное обеспечение. Чтобы создать FTP-сервер для частного пользования с минимальными настройками,вполне подойдут бесплатные программные пакеты.

Компанией Майкрософт в Windows 7 добавлена функция Internet Information Services (IIS), осуществляющая общий доступ из сети к выделенной для этой цели папке. Поэтому, чтобы создать FTP-сервер для Windows 7, не требуется дополнительно устанавливать ПО.

Установка FTP-сервера

Некоторые стандартные возможности, которыми пользуются не так часто, в Windows 7 отключены по умолчанию. Поэтому, чтобы их активировать, необходимо выполнить ряд шагов.

Для создания ФТП-сервера на Windows 7 необходимо:

  • Нажать «Пуск» и открыть раздел «Панель управления». Для удобства просмотра можно выбрать режим «Мелкие значки».

  • Перейти в раздел «Программы и компоненты», где выбрать «Включение или отключение компонентов Windows».

  • В списке открывшегося меню нужно отметить компоненты, которые следует активировать, поставив рядом галочку. Это папка «FTP-сервер», в ней два пункта: «Расширяемость FTP» и «Служба FTP», а также папка «Средства управления веб-сайтом», а в ней- «Консоль управления IIS». Для запуска нажать OK.

Настройка ФТП-сервера

  1. Теперь нужно снова зайти через «Пуск» в «Панель управления».
  2. Найти раздел «Администрирование» и открыть в этом разделе «Диспетчер служб IIS».
  3. Перейти во вкладку «Сайты», щёлкнув на название правой кнопкой, выбрать из списка «Добавить FTP сайты».
  4. В новом окне требуется указать имя будущего ФТП-сервера, и путь к каталогу с его данными. К следующему этапу настройки можно перейти, нажав кнопку «Далее».
  5. Теперь устанавливаются параметры сервера. В поле IP-адреса выбрать нужный из списка. Можно привязать его к определённому адресу или сделать расширенный доступ, выбрав пункт «Все свободные». При этом должен быть отмечен стандартный порт- 21. Если планируется постоянно использовать FTP-сервер, то следует поставить отметку галочкой «Запускать FTP-сайт автоматически». Выбрать опцию «Без SSL», её можно включить в случае необходимости позже. Снова нажать «Далее».
  6. В новом окне задаётся тип авторизации. В пункте «Проверка подлинности» можно разрешить вход для обычных или анонимных пользователей. Здесь же можно настроить для них права. Нажать«Готово».

После завершения установки в разделе «Сайты» появится новый ФТП-сервер.

Настройка брандмауэра Windows

Теперь обязательно необходимо настроить брандмауэр Windows для открытия портов и функционирования служб.

Снова войти в «Панель управления», затем «Брандмауэр Windows». Найти раздел «Дополнительные параметры».

В нём выбрать «Правила для входящих соединений». Для них рекомендуется установить пассивный режим. Для этого правой кнопкой мыши нажать и включить правила «FTP Server Passive» и «FTP-сервер (входящий трафик)». Таким же образом для исходящих подключений включить в соответствующем разделе правило «FTP-Server».

Подключение пользователей

Чтобы на сервер могли заходить пользователи, их необходимо подключить.

  • Во вкладке «Панель управления» открыть папку «Администрирование».

Раздел Администрирование

  • Найти раздел «Управление компьютером», затем перейти к папке «Локальные пользователи». Нажав правой кнопкой на строку «Группы», выбрать функцию «Создать группу». В новом окне указать имя и короткое описание группы, нажать «Создать».
  • Теперь можно подключить пользователей к созданной группе. В папке «Локальные пользователи» нажать правой кнопкой на строку «Пользователи» и выбрать из списка меню «Новый». Заполнить поля, введя имя и пароль, здесь же следует установить галочкой запрет на смену пароля.
  • Для подключения пользователя нажать правой кнопкой на его учётную запись и выбрать из списка меню пункт «Свойства», далее - вкладка «Членство в группах» и кнопка «Добавить». Найти созданную группу, добавить и нажать OK. Эту процедуру нужно выполнить для всех пользователей сервера.
  • На следующем этапе определяются права доступа пользователей группы к рабочему каталогу. Для этого нужно перейти к каталогу «Сайт», щёлкнуть по названию правой кнопкой и открыть «Свойства». Далее - вкладка «Безопасность», в пункте «Изменить» указать название группы и нажать ОК. Затем нужно настроить права для пользователей.
  • Войти в «Диспетчер служб IIS», нажав правой кнопкой на строку «Правила авторизации FTP», добавить разрешающее правило. Можно позволить пользователям запись и удаление данных, а можно только чтение.

Установка и настройка сервера завершена. Однако, теперь нужно знать, как зайти на FTP-сервер.

Стандартные функции Windows позволяют сделать это просто. Достаточно открыть папку «Мой компьютер», затем в адресной строке указать путь к серверу.

Другой способ - создать ярлык подключения к ФТП на рабочем столе компьютера.

Для этого открыть«Панель управления», кликнуть правой кнопкой раздел «Сетевое окружение». В задачах выбрать «Добавить новый элемент в сетевое окружение», затем щёлкнуть на пункт «Выберите другое сетевое размещение» и «Далее». Теперь в разделе «Сетевое размещение» появится ярлык, который нужно просто перетащить мышью на рабочий стол.

Передача информации в интернете осуществляется несколькими способами. По правилам протокола НТТР данные представляются средствами языка гипертекстовой разметки. Любой браузер получает контент сайта от сервера в виде гипертекстового описания и преобразует его в образ страниц.

Протокол FTP предназначен для простого обмена файлами между узлами сети, когда файлы передаются без каких-либо изменений и преобразований. При подключении удаленного компьютера к FTP-серверу копирование файлов между ними происходит подобно операциям в проводнике локального ПК. В свое время FTP разрабатывался именно для пересылки файлов и поэтому данный протокол является оптимальным инструментом файлообмена.

Используя всемирную паутину (www), мы ежедневно скачиваем и отправляем данные на серверы по http-протоколу. Также можно загружать на свой ПК файлы хранящиеся на многочисленных ftp-серверах. Тысячи FTP-серверов предоставляют анонимный бесплатный доступ к гигабайтам самых разнообразных данных: дистрибутивам ПО, изображениям, текстовым, аудио- и видеофайлам.

Кроме этого, на многих серверах существуют каталоги открытые на запись для размещения в них файлов пользователей. Так обеспечивается пополнение библиотек свежей информацией. Эти разделы могут использоваться с целью резервного копирования или дальнейшего распространения файлов по сети. Таким образом, FTP-архивы - это рассредоточенный депозитарий информации хранящейся в виде файлов на различных серверах по всему миру. Популярные сегодня облачные хранилища данных - лишь современная альтернатива FTP-файлообменникам.

Хотя, FTP - один из старейших сетевых протоколов, для многих пользователей ftp-ресурсы интернета остаются неизведанной областью.

Для работы с ftp-хостами существует множество десктопных приложений. Один из популярных ftp-клиентов - бесплатная программа FileZilla.

Скачаем FileZilla Client с официального сайта http://filezilla.ru/get/

Чтобы с помощью такого клиентского приложения подключиться к ftp-серверу нужно иметь его адрес. И определенно знать, что искомый файл записан в одной из его директорий. И нужно знать имя файла или, хотя бы, часть его названия. Фактически, это уже не поиск файла, а точное и целенаправленное его извлечение.

Узнать имя файла можно на страницах с его описанием, предварительно погуглив, например, интересующую тему. Далее, имея название файла, можно обратиться уже к ftp-поисковикам. Создано немало таких специальных поисковиков. Найти их в сети можно по запросу: "ftp-поисковик". Существуют и каталоги открытых ftp-серверов, как например: https://goo.gl/U7e4us

Попробуем найти и скачать с ftp-сервера небольшую полезную программку для записи образа диска ImgBurn.

Для поиска в ftp-архивах используем сервис krasfs.ru . В поисковую строку вписываем название файла и ищем только в FTP:

По запросу открывается десяток файлов с дистрибутивом приложения. Правой кнопкой мышки из контекстного меню командой: "Сохранить ссылку как..." открываем проводник ПК и сохраняем файл в выбранную директорию:


Кажется, такой поиск файлов совсем не впечатляет. Ведь скачать последнюю версию подобной бесплатной программы проще с официального сайта разработчика.

К ftp-ресурсам стоит обратиться когда привычным способом на страницах сайтов нужный файл не находится. Или предстоит копирование из сети объемного файла - более 100 Мб. Потому что, при всех прочих равных условиях файл из ftp-архива скачается быстрее.

И теперь посмотрим как работает менеджер FileZilla. Скачали, установили и открыли программу. Копируем адрес ссылки из поисковика krasfs.ru:

и вставляем ее в поле программы: "Хост:". Остальные поля не заполняем, так как доступ к серверу анонимный, и нажимаем кнопку "Быстрое соединение". Через некоторое время приложение подключается к хостингу. В правой части окна программы разворачиваем структуру директорий ftp-сервера, проходим в конечную папку согласно ссылке из поисковика: ftp://82.209.233.14/media/soft/Beloff/BWPI/Portable/ ImgBurn.exe и в правой нижней четверти окна находим искомый файл:


Правой кнопкой мышки выделяем файл, в его контекстном меню кликаем команду "Скачать" и наблюдаем процесс копирования:


Очень удобно работать в FileZilla - дружественный интерфейс, все директории как на ладони. При этом, в случае разрыва соединения с сервером, файл в ftp-клиенте можно докачать. Если скачивать просто браузером, как было показано выше, после прерванного подключения придется начинать копирование заново.

Обратим внимание на сервис krasfs.ru. Кроме файлов из архивов FTP этот поисковик находит раздачи на площадках двух десятков популярных торрент-трекеров. Для поиска используем названия фильмов или книг, имена авторов произведений, исполнителей. Когда файл найден, копируем адрес ссылки и добавляем его в торрент-клиент:


Итак, вооружившись универсальным сервисом krasfs.ru, ftp-каталогами начинаем изучать доступные ftp-кладовые. Исследуя ftp-ресурсы в поисках нужного попутно в папках можно обнаружить другие интересные и эксклюзивные материалы - уникальные файлы из самых разных областей. Это напоминает рыбалку - вылавливая одно можно поймать неожиданную удачу. То есть, появляется интрига найти что-то редкое, малоизвестное.

Пошаговое руководство для вебмастеров, в котором рассказала и показала все детали и нюансы использования 301 редиректа.

Редирект - это способ перенаправить пользователей и поисковых систем на другой URL отличный от того, который они первоначально запросили. Ниже приведены описания некоторых из наиболее часто используемых видов перенаправления.

301 Moved Permanently

301 редирект является постоянным редиректом, который передает около 90-99% ссылочного веса. Данный редирект указывает, что страница перемещена по новому адресу и старый url следует считать устаревшим.

302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

302 редирект - временный редирект. Данный редирект передает 0% от ссылочного веса и, в большинстве случаев, не должен использоваться. На данный момент интернет работает по протоколу HTTP, который и определяет, как обрабатывать URL-адреса. В двух версиях этого протокола этот ответ сервера имеет разный статус ответа:

  • HTTP 1.0: 302 ответ сервера это «Moved Temporarily » - текущий документ временно перемещен на другой URL.
  • HTTP 1.1: произошло изменение ответа сервера на «Found» - текущий документ найден.

307 Moved Temporarily (HTTP 1.1 Only)

307 редирект в протоколе HTTP 1.1 стал приемником 302 редиректа. В то время как основные поисковые боты начнут рассматривать его как аналог 302, для почти всех случаев лучше всего использовать 301. Исключением из этого правила является, когда контент действительно переехал только временно (например, во время технического обслуживания) и поисковые системы уже понимают, что ваш сервер совместим с HTTP 1.1. Но, так как практически невозможно определить, действительно ли поисковые системы поняли, что ваш сервер совместим с этим новым протоколом, то лучше использовать 302 редирект для контента, который был временно перемещен.

Другие виды редиректов

Существуют также и другие виды редиректов: Meta Refresh или с помощью JavaScript - которые выполняются на уровне страницы, а не на уровне сервера. Вот как выглядит типичный редирект Meta Refresh:

meta content="5;url=http://www.seoprofy.ua/" />

Но, данные редиректы желательно использовать крайне редко, так как ими очень любят злоупотреблять спамеры и дорвейщики. Кроме этого, при использовании этих редиректов ссылочный вес почти не передается.

Канонизация домена сайта или как склеить домен?

Чтобы склеить домен с www на без www:

RewriteCond %{HTTP_HOST} ^www.site.com$

RewriteRule ^(.*)$ http://site.com/$1

Для склейки с без www на с www:

RewriteCond %{HTTP_HOST} ^site.com$

Для того чтобы правильно выбрать на какой из вариантов склеивать, желательно посмотреть:

  • который из этих вариантов больше находится в ТОПе
  • у какого из вариантов больше страниц в индексе

Канонизация слеша в конце урла

При проектирование сайта важно определиться с одним форматом использование слеша в конце урла, так как для поисковых систем 2 урла вида

  • http://www.site.com/cat1/
  • http://www.site.com/cat1

являются разными. Поэтому после того как вы определились, как именно у вас будет на сайте, необходимо прописать следующие редиректы:

Для того чтобы удалить слэш в конце:

RewriteCond %{HTTP_HOST} (.*)

RewriteCond %{REQUEST_URI} /$

RewriteRule ^(.*)(/)$ $1

Для того чтобы добавить слэш в конец адресной строки:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*[^/])$ $1/

Редирект одной страницы на другую страницу:

Redirect 301 /oldpage.html http://www.site.com/newpage.html

Редирект для дублей главной страницы:

Этот код гарантирует, что любой адрес домашней страницы, который включает несколько версий прямых ссылок имени страницы, например, default.htm или index.html, будет перенаправлен на каноническую главную страницу, http://www.site.com:

RewriteCond %{THE_REQUEST} ^{3,9} /([^/]+/)*(default|index|main).(html|php|htm) HTTP/

RewriteRule ^(([^/]+/)*)(default|main|index).(html|php|htm)$ http://www.site.com/$1

Редирект каталога

Если структура каталога у вас отображается в url-ле, то при перекаталогизации у вас, соответственно, будут изменяться и url. В таком случае необходимо прописать следующий редирект:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2

Но, если url старого каталога начинается сразу после домена: www.site.com/old-catalog/, то необходимо воспользоваться следующим кодом

RewriteRule old-catalog /(.*) / old-catalog /$1

Редирект при смене расширения файлов

Если вы вдруг переехали на другую платформу или CMS, и при этом у url-ов изменились только расширение, то в этой случае вам поможет вот такой редирект:

RedirectMatch 301 (.*).php$ http://www.site.com$1.html

Примеры использования для защиты сайта от множественных дублей страниц

Редирект с разных доменов и субдоменов

Если вы купили несколько доменов в разных доменных зонах или разрабатывали новый сайт и повесили его на субдомен, а этот субдомен забыли закрыть от индексации, то необходимо сделать редирект на основной домен:

RewriteRule ^(.*)$ http://www.site.com/$1

Таким образом, все домены типа www.site.ru, www.site.net, test.site.com будут переадресовываться на сайт www.site.com.

Как удалить несколько слешей/тире в урле

Иногда «по случайности» в урле могут появиться по несколько слешей, например, www.site.com/catalog////page-1.html. В таких случаях необходимо делать 301 редирект на страницу с одним слешем www.site.com/catalog/page-1.html:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$

RewriteRule . %1/%2

Аналогично, можно склеить в урле несколько дефисов в один: с www.site.com/catalog/page-1.html на www.site.com/catalog/page-1.html:

RewriteCond %{REQUEST_URI} ^(.*)-(.*)$

RewriteRule . %1-%2

Как сделать редирект с любого урла на url только в нижнем регистре

Поскольку поисковыми системами регистр букв учитывается, то при проектировании сайта желательно, чтобы все урлы были в нижнем регистре. Однако, если вы изначально упустили данный момент, то лучше всего воспользоваться следующим кодом для редиректа на уровне php-скрипта:

$lowerURI=strtolower($_SERVER[’REQUEST_URI’]);

if($_SERVER[’REQUEST_URI’]!=$lowerURI)

header("HTTP/1.1 301 Moved Permanently");

header("Location: http://" . $_SERVER[’HTTP_HOST’] . $lowerURI);

Как переехать на новый домен? Оптимальная стратегия 301 редиректа

Оптимальной стратегией переезда на новый домен, учитывая пожелания 2-ух основных поисковых систем рунета Яндекс и Google, это:

  • постраничный 301 редирект со старого сайта на новый.
  • при этом для файла robots.txt редирект не делаем, а прописываем в нем директиву Host на новый домен.

Тогда код для настройки редиректа на старом сайте может иметь следующий вид:

RewriteCond %{REQUEST_FILENAME} robots.txt$

RewriteRule ^([^/]+) $1 [L]

RewriteCond %{HTTP_HOST} !^www.site.com

RewriteRule ^(.*)$ http://www.site.com/$1

а файл robots.txt для старого сайта:

User-agent: Yandex

Host: newsite.com

Генерация 301 редиректов

Если вы не очень технически подкованы, то можно воспользоваться сервисами генерации базовых редиректов:

На таких сервисах можно только подставлять собственные данные и сразу получать готовый код для редиректов между доменами, директориями или урлами.

Как проверить 301 редирект

После каждого изменение логики работы 301 редиректа необходимо проверять работоспособность сайта:

  • вообще ли работает сайт: зайти на главную страницу)
  • походить по основным разделам и страницам сайта

Также для более тщательной проверки отработки редиректов можно использовать следующие сервисы:

Как и когда лучше использовать 301 редирект vs Canonical

Хотя есть некоторые нюансы, Google предоставляет некоторые четкие правила, для того чтобы он понимал, что именно мы хотим сказать. В очень простой ситуации вот, как понимают данные инструкции поисковые системы:

301 - Эй, Поисковики: моя страница уже не здесь, и она навсегда переехала на новую страницу. Пожалуйста, удалите старую страницу из индекса и передайте её вес на новую страницу.

Canonical - Эй, Поисковики (так для большинства поисковых систем): у меня есть несколько версий этой страницы (или содержания), пожалуйста, индексируйте только ту версию страницы, на которую стоит canonical. Я буду держать другие страницы доступными для людей, чтобы они могли их видеть, но, Поисковик, не включай их в свой индекс и пожалуйста, передай вес на мою предпочтительную страницу.

Когда лучше использовать 301 редирект

  • По умолчанию - это предпочтительный метод
  • Для страниц: если страница навсегда переехала или была заменена на новый адрес
  • Для доменов: если сайт переехал на новый домен (продажа сайта, ребрендинг и т.д.)
  • Для 404 страниц и страниц с контентом, который потерял свою актуальность (при условии соответствующего содержания). Например, если удален товар из определенного каталога, то можно сделать редирект на похожий товар или на url-категории, к которой принадлежал данный товар.

Когда лучше не использовать 301 редирект?

  • Когда 301 редиректы не могут быть реализованы, или их внедрение займет слишком много времени
  • Дублированный контент, но вы хотите сохранить обе страницы для людей (например, показывать на разных урлах разный размер одежды)
  • Страницы с несколькими разными url по сути одной страницы (например, сортировки каталога, отслеживания партнерских ссылок, ...)
  • Кросс-доменов, когда оба сайта похожи, но похожий контент нужно оставить на каждом из доменов.

Итого

Ошибки при использовании редиректов

  • Любой многошаговый редирект. Если есть возможность, то желательно не допускать многошаговых редиректов, чтобы он и быстрее сработал, и передалось максимум ссылочного веса.
  • Использование неправильного типа редиректов. При выборе типа редиректа необходимо учитывать нюансы каждого из них.
  • Внедрение внутренних редиректов без смены ссылок на новые адреса. После внедрения всех редиректов у себя на сайте, необходимо проверить, чтобы каждая страница вашего сайта уже ссылалась на новую и внутри сайта у вас не было ссылок на страницы, с которых происходит редирект.
  • Редирект на нерелевантные страницы/контент. Редирект всегда желательно проставлять на максимально релевантную страницу: или на похожую страницу, или на ветку каталога/раздела, к которому принадлежала данная страница.
  • Неправильный выбор использования rel=canonical vs 301 редирект.
  • Редирект, конечной точкой которого является не 200-я страница. Редирект должен вести на правильно работающую страницу с 200 ответом сервера. Иначе, желательно не сбивать поисковых роботов и отдавать 404 ответ.
  • Редирект robots.txt. Так как, например, нужно прописывать директиву Host для Яндекса при склейке доменов.

Надеемся, что данное руководство станет вам шпаргалкой и помощником для использования 301-го редиректа для вашего сайта.