Main > Apache | Servers > Редирект через .htaccess (mod_rewrite) на другой домен с сохранением url

Редирект через .htaccess (mod_rewrite) на другой домен с сохранением url

12.02.2012 9 comments » Views: 5,908

Apache logo

Пример редиректа на другой сайт при помощи mod_rewrite с сохранением url.

Добавляем в .htaccess следующий код

Author: | Rating: 4/5 | Tags:

9 comments.

Write a comment
  1. Юрий Reply
    25.03.2017 в 5:21 pm
    Подскажите, пожалуйста, почему при добавлении этого кода:
    RewriteEngine On
    RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

    переадресация происходит только для адресов вроде
    http://site.com/
    http://site.com/img/
    http://site.com/sdfsdf

    А переадресация для файлов не срабатывает, т.е. файл по адресу
    http://siteold.com/css/main.css
    так и откроется на старом домене, а я хочу, чтобы и ко всем файлам на старом сайте тоже срабатывал редирект на новый домен.
    Наличие или отсутствие Options +FollowSymLinks в моём случае никак не влияет на переадресацию, я проверил.

    Подскажите, как добиться нужного мне результата?
    • Vitaliy Orlov Reply
      26.03.2017 в 9:32 pm
      Привет, если в примере все так как ты написал, то не должно пропускать файлы (т.е. в твоем примере все верно написано).

      Можешь попробовать еще сделать так:

      RewriteEngine on
      RewriteRule ^ http://www.new-site.com%{REQUEST_URI} [R=301,L,QSA,NE]
    • Vitaliy Orlov Reply
      26.03.2017 в 9:39 pm
      Еще может быть вариант, когда перед apache-ем стоит nginx и статические файлы отдает самостоятельно, не передавая управления apache-у. Проверить можешь прописав для теста полный путь, типа того:

      RewriteEngine on
      RewriteRule ^css/main\.css https://www.new-site.com%{REQUEST_URI} [R=301,L,QSA,NE]
      Если редирект по прежнему не срабатывает для этого адреса, то попробуй написать в поддержку хостера и уточнить про nginx перед apache-ем.
      • Юрий Reply
        28.03.2017 в 8:33 pm
        Да, похоже что так и было, решил эту проблему, просто удалив все файлы со старого хостинга. Просто сначала хотел оставить их, на всякий случай. Сейчас уже экспериментировать лучше не буду, я уже добился нужной работоспособности редиректа. К тому же уже сообщил и яндексу и гуглу, что сайт перехал на новый домен (не хочу создавать какие-либо сложности этому процессу). Но всё равно, спасибо за инфу, наверняка кому-нибудь пригодится. Мне думается, что упомянуть о такой особенности можно даже в основном тексте статьи.

        Кстати, не пришло от вас (с сайта) письмо об ответе на мой вопрос (удобнее когда приходит).
  2. василий Reply
    05.01.2015 в 3:46 am
    допустим я делаю редирект с сайта1на сайт2, а в браузере будит отображаться адрес сайта1.
    Я правильно понял?
    • Vitaliy Orlov Reply
      05.01.2015 в 7:39 pm
      Нет, не верно.
      На сайте: http://site1.com настраиваем редирект на http://site2.com
      Заходим на site1.com вбив в браузере http://site1.com , происходит редирект на http://site2.com
      В браузере в строке адреса будет http://site2.com
      • Андрей Reply
        29.11.2017 в 1:31 am
        Не понял ответа на вопрос Василия, почему верно если сами пишете что будет отображаться http://site2.com. Как раз проблема в том что должно отображаться http://site1.com а по факту при переходе отображается http://site2.com. Сам с такой проблемой столкнулся, необходимо сделать переадресаию с сохранением в адресной строке http://site1.com и всех путей от сайта http://site2.com. Если знаете как, напишите мне, работу оплачу.
        • Vitaliy Orlov Reply
          29.11.2017 в 11:31 am
          Привет, ты все правильно заметил - это была ошибка, уже исправил.

          Реализовать, что вы хотите через редиректы нельзя.

          Можно через прокси, смотри mod_proxy

          Если оба сайта твои и находятся на одном сервере, тогда так же можно смапить домен2 в папку домена1, но думаю тут не про этот случай идет речь.

          У меня, к сожалению, сейчас много работы. Попробуй опубликовать проект на weblancer.net или fl.ru, там много админов кто сможет помочь.
    • Vitaliy Orlov Reply
      05.01.2015 в 7:55 pm
      Если надо чтобы когда ты напишешь в браузере: http://site2.com открывался сайт http://site1.com. То тебе надо просто "смапить" папку домена site1.com с доменом site2.com. Это может сделать тех поддержка твоего хостера. То что я описываю выглядит как "1 сайт" физически связан с двумя разными доменами. Разумеется, для этого случая тебе надо владеть обоими доменами.
      Чаще всего это может пригодится, как у тебя один и тот же сайт должен по каким-то причинам открываться по двум доменам, например: mysite.COM и mysite.RU, но учти что поисковикам это не нравится, т.к. по сути для них происходит дублирование контента.

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>