За последние 24 часа нас посетили 24209 программистов и 1641 робот. Сейчас ищут 870 программистов ...

Чуть более сложный редирект.

Тема в разделе "PHP для новичков", создана пользователем BaranPHP, 3 апр 2014.

  1. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Здравствуйте.
    Возникла проблема с написанием редиректа. Помогите написать функцию.

    Сайт переехал с адреса "sajt.ru" на "sajt.com". От сайта осталась только одна страница "sajt.ru/index.php". Задача стоит такая если пользователь заходит на страницу набирая:
    "sajt.ru"
    "www.sajt.ru"
    "http://sajt.ru/"
    "http://sajt.ru/index.php" и т.д., то ридирект не нужен. Пользователь должен попасть на главную сайта "sajt.ru"

    Но вот если ссылка более сложная к примеру:
    "http://sajt.ru/product/296"
    "http://sajt.ru/news/101"
    "http://sajt.ru/page/23" и т.д., то нужно перенаправить на "sajt.com" с сохранением пути. То есть с:
    "http://sajt.ru/product/296" надо сделать редирект на "http://sajt.com/product/296"
    а с "http://sajt.ru/news/101" на "http://sajt.com/news/101".
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    .htaccess
    Код (Text):
    1. <IfModule mod_rewrite.c>
    2.     RewriteEngine On
    3.     RewriteCond %{REQUEST_FILENAME} !-f
    4.     RewriteRule ^(.*)$ index.php [QSA,L]
    5. </IfModule>
    index.php
    Код (PHP):
    1. if (!in_array($_SERVER['REQUEST_URI'], ['/', '/index.php'])) {
    2.   header('Location: http://sajt.com/'.$_SERVER['REQUEST_URI']);
    3.   exit();
    4. }
     
  3. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    попробуйте так
    Код (PHP):
    1. if (!in_array($_SERVER['REQUEST_URI'], array('/', '/index.php'))) {
     
  5. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Аrtoodetoo, Runcore
    - большое спасибо конструкция работает. Помимо просто благодарности за эту работу есть ещё символическое "спасибо" в виде paypal. Если вас не обидят скромные суммы, напишите в личку счета paypal .
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    смешно. если тебя так прижало вознаградить, можешь кинуть на WM, ссылку найдешь под моей фоточкой.
    а якщо ні так ні
     
  7. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Не обладаю счетами WM, выгреб всё что было у ребёнка на счёте.
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    спасибо! нежданчик случился ;)
     
  9. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    Вообще поисковые системы плохо относятся к редиректам. Есть шанст что поисковики смогут понизить сайт в выдачи.