Помогите с ЧПУ пожалуйста.

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

Статус темы:
Закрыта.
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Товарищи подскажите пожалуйста как заствить работать ссылки
    вида
    вот ссылка которая выводит категории
    smart.ru/demo/?catid=1
    smart.ru/demo/?catid=2 и так далее

    нужно сделать так


    ссылка ЧПУ smart.ru/demo/politika
    Сделал Акцесс
    записал
    RewriteEngine on
    Options +FollowSymlinks

    RewriteRule ^([0-9]+)?$ index.php?catid=$1 [L]



    вид урла smart.ru/demo/politika меняеться
    а новости на месте .


    Как сделать правильно чтоб работало Чпу?
    Может в PHP что еще добавлять надо?
    Буду очень признателен кто подскажет.
     
  2. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    RewriteRule в значении $1 отправляет demo/politika, но втвоем случае нужно 1 или 2 в зависимости от категории.
    При помощи htaccess категорию politika в ее id преобразовать невозможно.
     
  3. studentpm

    studentpm

    Регистр.:
    8 ноя 2006
    Сообщения:
    184
    Симпатии:
    132
    RewriteRule ^([0-9]+)?$ index.php?catid=$1 [L]
    это правило говорит что все твои параметры это цифры.
    попробуй так
    RewriteRule ^(.*)$ index.php?catid=$1 [L]
     
  4. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    PHP:
    RewriteRule ^politika/([0-9]+)(обратный слэш).html?$ index.php?catid=$[QSA,L]
    вид урла   smart.ru/demo/politika/1.html
    $c_id
    =$_GET['catid'];
     
  5. Energetik

    Energetik Писатель

    Регистр.:
    12 апр 2008
    Сообщения:
    6
    Симпатии:
    0
    Ребят, помогите преобразовать

    вот из этого
    _http://site.ru/?action=show_gallery&artist=ilya
    в это
    _http://site.ru/ilya.html
    или в это
    _http://site.ru/ilya/
     
  6. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    _http://site.ru/ilya.html
    Код:
    RewriteRule ^(.*)\.html?$ index.php?caction=show_gallery&artist=$1
    
    _http://site.ru/ilya/
    Код:
    # автоподстановка завершающего слэша, на вякий случай.
    # можно убрать
    RewriteCond %{REQUEST_URI} !/$
    RewriteCond %{REQUEST_URI} ![^/]*\.[^/]*$
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [NS,L,R=301]
    
    # собственно правило
    RewriteRule ^(.*)\/?$ index.php?caction=show_gallery&artist=$1 [L]
    
     
    Energetik нравится это.
  7. Energetik

    Energetik Писатель

    Регистр.:
    12 апр 2008
    Сообщения:
    6
    Симпатии:
    0
    BDSG, не сочти за наглость :ah:
    а в это
    _http://site.ru/artist/ilya.html
    _http://site.ru/artist/ilya/

    просто чтоб въехать самому как это делается, спасибо
     
  8. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    ну должно быть так:
    RewriteRule ^artist/(.*)\.html$ index.php?caction=show_gallery&artist=$1

    или если тебе надо передать саму переменную "что спрашиваем" (артист, альбом, жанр и т.п.)
    RewriteRule ^(\w+)/(\w+)\.html$ index.php?caction=show_gallery&$1=$2

    зы.. модификатор \w указывает на алфавитно-цифровой и символ '_', + - на повторение 1 и более раз..
     
    Energetik и Neow15ard нравится это.
  9. Neow15ard

    Neow15ard

    Регистр.:
    27 ноя 2008
    Сообщения:
    422
    Симпатии:
    188
    Всем помогают ?
    мозг кипит , вроде просто а голова забита другим

    помогите
    вот этто правило
    PHP:
    RewriteRule ^rssnews\/(.*)\/page\/(.*)$ index.php?rssnews=$1&p=$2
    RewriteRule 
    ^rssnews\/(.*)$ index.php?rssnews=$1
    передалть на чтоб страницы выводились не вида name.html
    счас они вида name/

    ага в итоге ^rssnews/(.*)\.html$ index.php?caction=show_gallery&artist=$1
     
  10. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    признаться не очень понятно сформулирован вопрос..

    может имелось в виду это
    Код:
    RewriteRule ^rssnews/(\w+)/(\w+)\.html$ index.php?rssnews=$2&p=$1
    
    где в первом после rssnews идет сначала номер страницы, потом имя новости (я так понял).. вид _site.ru/rssnews/номер_страницы/имя-новости.html

    можно еще, например так собрать:
    Код:
    RewriteRule ^rssnews/(\w+)-(\d+)\.html$ index.php?rssnews=$1&p=$2
    
    ссылку фрмировать в виде _site.ru/rssnews/имя-новости-Х.html, где Х - номер страницы.. единственное условие - новость не должна заканчиваться на "-число", или обязательно должно присутствовать "-Х"..
     
    Neow15ard нравится это.
Статус темы:
Закрыта.