append — 301 Redirect в .htaccess добавляет старый путь/имя файла к новому URL-адресу
Задавать вопрос
спросил
Изменено 4 года, 4 месяца назад
Просмотрено 1к раз
У меня есть два URL-адреса: old-site.com и new-site.com. В моей корневой папке на old-site.com НЕТ ФАЙЛОВ, а только файл .htaccess. Я больше не хочу использовать старый домен. Однако я хочу передать ссылочный вес новому домену. Поэтому я создал 301 редиректы в файле .htaccess и поместил его в корневую папку на old-site.com.
Почему перенаправление 301 добавляет «old-site.com/…» к new-site.com?
Весь мой .htaccess выглядит так (я пропустил несколько ссылок, чтобы сократить его):
#Begin 301 Redirects Редирект 301 / https://www. new-site.com/ Редирект 301 /контакт https://www.new-site/contact-us/ Редирект 301 /аренда https://www.new-site/lodging/ Редирект 301 /lift.html https://www.new-site/our-rentals/boat/ Редирект 301 /rentals.html https://www.new-site/our-rentals/ Перенаправление 301 /map.html https://www.new-site/contact-us/ Редирект 301 /магазин подарков https://www.new-site/store/gift-shop/ #Конец переадресации 301
У меня нет перезаписи. Выше приведен весь мой код.
Следующее перенаправление работает нормально:
Перенаправление 301 / https://www.new-site.com/
Однако любое другое перенаправление создает следующий абсолютный путь на сайте new-site.com с ошибкой 404:
Если я перенаправляю:
Перенаправление 301 /contactus https://www.new-site/contact-us/
Он идет по адресу:
https://www.new-site.com/old-site.com/contactus
или
Если я перенаправляю:
Редирект 301 /lift.html https://www.new-site/lift/
Он идет по адресу:
https://www. new-site.com/old-site.com/lift.html
Почему перенаправление 301 добавляет «old-site.com/…» к new-site.com?
Спасибо. 3 absolute-path
Ваши правила не будут делать то, что вам нужно, из-за этой строки Redirect 301 / https://www.new-site.com/
, который сначала будет соответствовать любому запросу, и если вы поместите его последним, он также будет соответствовать любому запросу, поэтому, если вы хотите, чтобы он соответствовал только root, используйте RedirectMatch
, чтобы иметь возможность использовать регулярное выражение следующим образом:
RedirectMatch 301 /?$ https://www.new-site.com /
При этом остальные правила будут работать как положено.
Примечание: очистить кеш браузера тест
1Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью GoogleОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
Как реализовать перенаправление 301 в файлах Apache .htaccess
Перенаправление страниц или сайтов на веб-сервере Apache очень просто и является хорошим способом обеспечения SEO. Вы делаете это, изменяя файл на своем веб-сайте, называемый файлом .htaccess (обратите внимание, что фактическое имя файла начинается с точки). Файл .htaccess — это управляющий файл, который позволяет изменять конфигурацию сервера для каждого каталога.Файл управляет этим каталогом и всеми содержащимися в нем подкаталогами. Обычно этот файл находится в корневой папке вашего сайта. Когда вы редактируете файлы Apache, очень важно, чтобы ваш редактор сохранял файл в формате UNIX; в противном случае могут возникнуть ошибки.
Файл .htaccess должен быть настроен по умолчанию, но если ваша корневая папка не содержит этого файла, попросите кого-нибудь, кто понимает, как создать файл .htaccess, создать его.
Вот пример файла .htaccess для сайта, который переходит с ASP на PHP и перенаправляет версию без www на версию с www (обратите внимание, что там, где написано mydomain 9(.*) http://www.мой_домен.com/$1 [R=301,L] RedirectMatch 301 (.*).asp$ http://www.mydomain.com$1.php ЕслиМодуль> # КОНЕЦ
Обратите внимание, что предыдущий пример перенаправляет все, кроме www.mydomain.com. Другими словами, он также перенаправляет поддомены, такие как subdomain.mydomain.com и test.mydomain.com. Это может создать путаницу, если вы используете поддомены для тестовых сред или для других целей.
Прежде чем начать, убедитесь, что у вас есть доступ к файлу .htaccess. Если у вас есть доступ к вашему серверу, чтобы вы могли загружать и изменять файлы, у вас не должно возникнуть проблем. (На сервере Apache изменение файла .
htaccess не требует прав доступа на уровне администратора.) Если вы не можете получить доступ к файлам в своих веб-папках, позвоните своему хостинг-провайдеру и запросите эту возможность (или обратитесь к человеку, который может получить доступ к этим файлам для вас).Чтобы отредактировать файл .htaccess для перенаправления страниц на вашем веб-сайте, вы должны сначала узнать URL-адреса каждой веб-страницы/сайта, которые вы хотите перенаправить, и URL-адреса новой страницы/сайта, на которые они будут перенаправлены. Затем выполните следующие действия:
Войдите на свой веб-сайт и в корневой веб-папке найдите файл с именем .htaccess.
Если файла .htaccess нет, его необходимо создать. Опять же, будьте осторожны, чтобы на самом деле не было .htaccess и чтобы вы не перезаписывали его.
.htaccess — это скрытый файл, поэтому вам нужно разрешить программе FTP просматривать скрытые файлы, чтобы иметь возможность его увидеть.
Откройте файл . htaccess с помощью текстового редактора с окончаниями строк в стиле UNIX, например Notepad++.
Редактор кода, такой как Adobe Dreamweaver, также отлично обрабатывает файл .htaccess, поскольку он открывает файл как текст, но с этой задачей может справиться и простой текстовый редактор.
При необходимости отредактируйте файл, соблюдая точный синтаксис.
Чтобы добавить перенаправление 301 на определенную страницу в Apache
Добавьте в файл .htaccess строку, сообщающую серверу, что делать. Далее следуют два способа сделать это, и оба они выполняют одно и то же. ( Примечание: Вы должны заменить свои собственные URL-адреса файлов и доменное имя
[корневая часть URL-адреса вашего сайта] при использовании приведенных здесь примеров.)RedirectPermanent /старый-файл.html http://www.mydomain.com/new-file.html
или
Перенаправление 301 /старый-файл.html http://www. mydomain.com/new-file.html
На 301 Перенаправление всего домена в Apache
Чтобы перенаправить весь домен, вы добавляете строку в файл .htaccess, которая дает серверу ваши инструкции. Перенаправление с одного домена на другой будет записано так:
RedirectPermanent / http://www.new-domain.com/
Чтобы разбить их, каждая команда 301 Redirect состоит из трех частей:
Первая часть сообщает серверу, что делать, и вы можете ввести это двумя способами: либо RedirectPermanent , либо Redirect 301.
Вторая часть показывает относительный путь
Третий раздел — это полный путь к новому файлу. Начиная с http://, вы хотите включить полный URL-адрес (например, http://www. mydomain.com/new-file. html).
После того, как вы вставите команды 301 Redirect для перенаправления ваших страниц, вам нужно поместить пустую строку в конец файла. Ваш сервер читает файл .htaccess построчно, поэтому вам нужно в какой-то момент включить символ перевода строки (возврат каретки), чтобы сообщить серверу, что вы закончили.
Об этой статье
Эта статья из книги:
- Search Engine Optimization All-in-One For Dummies,
Об авторах книги:
Брюс Клэй считается многими стать отцом поисковой оптимизации или SEO. Он имеет более чем 25-летний опыт работы с компаниями по улучшению их присутствия в Интернете и результатов поиска, а также увеличению их аудитории.