За последние 24 часа нас посетили 49795 программистов и 1734 робота. Сейчас ищут 617 программистов ...

ЧПУ из MYSQL

Тема в разделе "PHP для новичков", создана пользователем wcb-falcon, 6 июл 2011.

  1. wcb-falcon

    wcb-falcon Активный пользователь

    С нами с:
    24 мар 2010
    Сообщения:
    30
    Симпатии:
    0
    Почти везде (где находил) предлагают организацию ЧПУ через .htaccess
    но не нашел подходящего для себя варианта, а суть такова:

    есть база:
    id
    title
    cpu
    ....
    из базы страницей index.php берутся данные и следовательно в адресной строке у нас получается
    http://sayt.ru/index.php?id=1 (возможны увеличения к примеру http://sayt.ru/index.php?id=1&str=3 что означает 3-ю страницу)
    Добавление в базу производится через админку сайта где
    title - название страницы
    cpu - короткое название на латинском без пробелов (которое и нужно вывести в адрес)
    чтобы ссылки выглядели так:
    http://sayt.ru/horoshaya_tema/ (а соответствовало http://sayt.ru/index.php?id=1)
    или
    http://sayt.ru/horoshaya_tema/3/ (а соответствовало http://sayt.ru/index.php?id=1&str=3)

    понятное дело что все такие выражения как "horoshaya_tema" в .htaccess не засунуть
    как в этом случае организовать ЧПУ подскажите или укажите где уже разбирали аналогичный вопрос.

    Заранее спс.
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    как вариант

    Код (Text):
    1. RewriteEngine on
    2. RewriteCond %{REQUEST_FILENAME} !-d
    3. RewriteCond %{REQUEST_FILENAME} !-f
    4. RewriteCond %{REQUEST_URI} !=/favicon.ico
    5. RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
    а внутри файла index.php можно делать всё что угодно с адресной строкой
    PHP:
    1. <?php echo isset($_GET['route']) ? $_GET['route'] : ''; ?>
     
  3. wcb-falcon

    wcb-falcon Активный пользователь

    С нами с:
    24 мар 2010
    Сообщения:
    30
    Симпатии:
    0
    Gromo
    получится что в $_GET['route'] будет содержаться все
    тоесть если раньше адрес был
    http://sayt.ru/index.php?menu=7&page=3&str=2
    то теперь введя его же но уже после обработки чпу
    http://sayt.ru/7/teatr/2
    получим $_GET['route'] = '7/teatr/2' где его уже придется резать по частям.
    а нельзя ли как то передать эти переменные в несколько сразу по частям ?
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
  5. wcb-falcon

    wcb-falcon Активный пользователь

    С нами с:
    24 мар 2010
    Сообщения:
    30
    Симпатии:
    0
    Интересное решение, спс, возможно этого будет достаточно (нужно протестировать возможности)

    Остался вот какой вопрос:
    выходит пользователь может попасть на одну и туже страницу
    как по http://sayt.ru/7/teatr/2
    так и по http://sayt.ru/index.php?menu=7&page=3&str=2
    а можно ли преобразовывать как то 2-й вариант (если он прошел по данной ссылке с другого ресурса или набрал его вручную в адресной строке)
     
  6. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    да, именно так

    а смысл?
     
  7. wcb-falcon

    wcb-falcon Активный пользователь

    С нами с:
    24 мар 2010
    Сообщения:
    30
    Симпатии:
    0
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
  9. wcb-falcon

    wcb-falcon Активный пользователь

    С нами с:
    24 мар 2010
    Сообщения:
    30
    Симпатии:
    0
    Логично :)

    Возник вот какой вопрос в связи с установкой ЧПУ.
    ранее на сайте был адрес http://sayt.ru/admin/ который соответственно вел на страницу регистрации и вход в админку сайта. Теперь же он не работает.
    Что нужно дописать в .htaccess (или в php) чтобы данный адрес снова заработал? :(
     
  10. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    wcb-falcon
    это зависит от того что у тебя там раньше было и как это было реализовано. если папка admin существует физически, то перенаправления происходить не должно. а если происходит - значит папка admin не существует, а было реализовано другим способом
     
  11. wcb-falcon

    wcb-falcon Активный пользователь

    С нами с:
    24 мар 2010
    Сообщения:
    30
    Симпатии:
    0
    да действительно мой косяк когда тестировал ЧПУ не закоментил другие варианты использования поэтому работало некоректно :oops:
    пока тогда более вопросов нет пойду "трудиться" 8)