Помогите с RewriteRule, или это вообще невозможно?

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем ParaBellum, 8 мар 2013.

  1. ParaBellum

    ParaBellum Постоялец

    Регистр.:
    20 фев 2008
    Сообщения:
    80
    Симпатии:
    4
    Суть в том, чтобы сделать зеркало сайта на WP.
    Итак, Есть site.ru с блогом на WP, есть второй алиас домен, alias.ru который ссылается на ту же папку на сервере что и site.ru

    Теперь получается что блог доступен по 2-м адресам, но ссылки на страницах блога все ведут на основной сайт:site.ru/URI То есть можно зайти на страницу alias.ru/page1, но затем после любого клика попадаем на основной сайт.

    То есть надо сделать правило чтобы тем кто зашел на зеркало alias.ru, все ссылки site.ru/URI подменялись на alias.ru/URI Подскажите как это сделать?

    Код:
    RewriteCond %{HTTP_REFERER} ^.*alias\.ru.*$  [NC]
    RewriteRule ^(.*)$ http://alias\.ru/$1  [R=301]
    
    не работает. Не грузятся картинки на alias.ru и при переходе ошибка 500.
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.183
    htaccess тут тебе не поможет.
    Для подмены ссылок нужно в движке изменения вносить. Например, в function.php темы написать правила замены ссылок в зависимости от хоста.
     
  3. ParaBellum

    ParaBellum Постоялец

    Регистр.:
    20 фев 2008
    Сообщения:
    80
    Симпатии:
    4
    Может правильнее действительно фанкшнс подпилить...
    Но почему htaccess не поможет? Неужели нельзя написать правило для htaccess:
    - Если реферер содержит alias - заменяем "site.ru" на "alias.ru" в адресе ссылки?
    Разве это невозможно сделать средствами mod_rewrite? Сами ссылки пусть берутся из БД вордпресса, главное чтобы человеку казалось что он с сайта alias.ru кликая по ссылке не переходит на главный сайт...
     
  4. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    по всей видимости Вы не совсем понимает что есть реврайт, если Вы захоидте по ссылке alias.ru, в адресной строке отображается alias.ru, а линки на сайте site.ru/page.html, то тут реврайт вам не поможет.. он не вносит изменения в содержимое страниц, по всей видимости у вас прописано в самих тегах линки с сайтом <a href="http://site.ru/page.html">, тут надо править код подменяя домен на правильный, или просто использовать относительные урлы <a href="/page.html">
     
  5. ParaBellum

    ParaBellum Постоялец

    Регистр.:
    20 фев 2008
    Сообщения:
    80
    Симпатии:
    4
    Люди, я понимаю что такое реврайт. Я неверно выразился. Я понимаю, что при его помощи нельзя менять ссылки в html на страницах. Я прошу указать на ошибку в этом правиле:

    RewriteCond %{HTTP_REFERER} ^.*alias\.ru.*$ [NC]
    RewriteRule ^(.*)$ http://alias\.ru/$1 [R=301]

    Пусть ссылки на сайте остаются _ttp://site.ru/page.html, просто при переходе по этой сслыке пусть site.ru заменяется на alias.ru (в том случае если реферер содержит alias.ru)
    Это же можно сделать при помощи реврайта?
     
  6. unkn0wn

    unkn0wn

    Регистр.:
    22 дек 2006
    Сообщения:
    163
    Симпатии:
    86