Не работает редирект при DirectoryIndex

Тема в разделе "Вопросы новичков", создана пользователем sam3d, 11 авг 2015.

  1. sam3d

    sam3d Создатель

    Регистр.:
    5 авг 2014
    Сообщения:
    16
    Симпатии:
    2
    Проблема, камрады:
    Сайт лежит в папке site, так как ссылки по сайту в базе прописаны все именно в эту папку. Поэтому в хтацессе прописано следующее:
    DirectoryIndex /site/index.php - Сайт работает, все хорошо

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} www^blablabla\.ru$ [NC]
    RewriteRule ^(.*)$ http://blablabla.bla/$1 [R=301,L] - Редирект работает, все хорошо.

    Redirect 301 /?page_id=64 http://blablabla.bla - не работает
    В чем может быть причина?
     
  2. world-tour

    world-tour Постоялец

    Регистр.:
    25 апр 2015
    Сообщения:
    102
    Симпатии:
    81
    Redirect 301 /?page_id=64 http://blablabla.bla/$1
    в данном случае так) но если ты хочешь чисто на главную ищи другой вариант, моё личное предположение)
    P.S> Или так попробуй
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.blablabla\.bla$ [NC]
    RewriteRule ^$ http://blablabla.bla/?page_id=64 [R=301,L]
     
  3. UJy

    UJy

    Регистр.:
    23 авг 2011
    Сообщения:
    338
    Симпатии:
    121
    Redirect 301 и RedirectPermanent не умеют обрабатывать строки с параметрами, поэтому это правило не видит этого "?page_id=64"
    Напиши правило с проверкой на QUERY_STRING и всё будет работать (хоть и громоздко).
    Код:
    RewriteCond %{QUERY_STRING} page_id=64
    RewriteRule .* http://blablabla.bla [R=301,L]
    
    Не сработает, ибо, как писал выше, редирект не увидит "page_id=64", да и "$1" в данном случае не существует...
    Данное правило всех посетителей которые идут на главную с www - средиректит на page_id=64 а автор не этого хотел...
     
  4. sam3d

    sam3d Создатель

    Регистр.:
    5 авг 2014
    Сообщения:
    16
    Симпатии:
    2
    Спасибо, за ответ! При данном правиле получается, что он меня адресанёт на http://blablabla.bla/?page_id=64 , а это не то что я хотел.
    По факту, нужен простой редирект в пределах одного сайта с page_id=64 на чпу
     
  5. sam3d

    sam3d Создатель

    Регистр.:
    5 авг 2014
    Сообщения:
    16
    Симпатии:
    2
    Спасибо, но редирект и вправду с параметрами видимо не работает, а второй сделает совсем не то что я хотел
     
  6. UJy

    UJy

    Регистр.:
    23 авг 2011
    Сообщения:
    338
    Симпатии:
    121
    Извини, забыл знак вопроса вконце строки поставить. Пробуй правило ниже, будет всё работать...
    Код:
    RewriteCond %{QUERY_STRING} page_id=64
    RewriteRule .* http://blablabla.bla/? [R=301,L]
    
    PS: данное правило будет редиректить ВСЕ страницы, у которых есть в урле ?page_id=64 на главную...
     
    sam3d нравится это.
  7. sam3d

    sam3d Создатель

    Регистр.:
    5 авг 2014
    Сообщения:
    16
    Симпатии:
    2
    Спасибо, о гуру модреврайта, все работает! Пойду дальше учить правила
     
  8. UJy

    UJy

    Регистр.:
    23 авг 2011
    Сообщения:
    338
    Симпатии:
    121
    Это я себя громко обозвал... У нас тут есть пользователь lag - вот он реально гуру модрерайта, такие правила пишет - чуствуешь себя полнейшим нубом :)