Как довести ЧПУ до нормального вида?

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем MAD-BOYT, 28 окт 2008.

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

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    Привет всем...

    Вобщем есть скрипт один. В нем ЧПУ нет.
    Я с помощью этого раздела форума добился небольших успехов и сделал чпу вида site.ru/news/1234
    Но мне нужно сделать site.ru/news/pervaya-novost.html

    Я глумился над форумом и скриптом, но результата не добился.

    Теперь к сути.

    Имеем скрипт
    PHP:
    if ( SERVER == 'APACHE' ) {
        
    define'NEWS_DIR''news/' );
        
    $Templater -> assign'NEWS_LINK'$SETTINGS['url'] . NEWS_DIR );
    }
    if ( 
    SERVER == 'IIS' ) {
        
    define'NEWS_DIR''news/?view=' );
        
    $Templater -> assign'NEWS_LINK'$SETTINGS['url'] . NEWS_DIR );
    }
    Имеем запись в .htaccess
    PHP:
    RewriteRule ^news/([0-9]+)$  /news/?view=$1
    В таблице новости создал поле alt_name
    туда пока вбиваю вручную текст ссылки.
    Вот....
    Сама ссылка в шаблоне имеет такой вид
    PHP:
    {$NEWS_LINK}{$News.id}
    Т.е. переменную NEWS_LINK создал я.
    Работает все это дело на smarty.
    Я менял News.id на News.alt_name и ссылка менялась. Т.е. было все нормально site.ru/news/pervaya-novost
    но при переходе естественно ошибка. Так как в htaccess нет пути.

    Теперь вопросы.
    1 - Что мне прописать в htaccess, чтобы открывались новости.
    2 - Как можно сделать, чтобы title новости автоматически генерировался в alt_name при ее создании. а то жопа для каждой новости еще и вписывать url
    3 - Как можно еще создавать теги по типу $NEWS_LINK -кроме того что я привел выше.
    Т.е. что-то по такому типу можно сделать?>>
    PHP:
    if ( SERVER == 'APACHE' ) {
    $NEWS_LINK news/;
    $CAT_LINK category/;
    $FILE_LINK files/;
    }
    if ( 
    SERVER == 'IIS' ) {
    $NEWS_LINK news/?view=;
    $CAT_LINK cat/?view=;
    $FILE_LINK file/?view=;
    }
    т.е. чтобы сократить код)))


    Извените если гдето не правильно выразился.
    Заранее спасибо, жду ответов))
     
  2. EugeneVC

    EugeneVC

    Регистр.:
    28 окт 2007
    Сообщения:
    297
    Симпатии:
    83
    посмотрите на Wordpress
    у него в таблице сообщений сделано 2 поля
    Title - новости
    URL - url новости

    то есть для каждой новости прописан url.

    Можно попробовать назначать каждой новости название автоматом, посмотрите плагин rus2lat для Wordpress.
     
  3. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    За наводку на плагин спасибо.
    Поле URL я уже давно сделал.(alt_name)
    Но что нужно прописать в htaccess чтобы ссылки работали.
    я пробовал вставлять в htaccess a-z вместо 0-9, но результата нет.
    При наведении на ссылку на новость в браузере меняется название на мое поле избазы, но при нажатии перекидывает на главную. В htaccess ведь нечего на счет букв не прописано.
    помогите ктонить плиз?!...
     
  4. Zloboff

    Zloboff Прохожие

    Попробуй так:

    Код:
    RewriteRule ^news/([a-z0-9_-]+) news/?view=$1 [L]
    
     
  5. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    Нет. не пашет.
    Выкидывает ошибку с ! знаком.

    А вот так не выкидывает ошибку.
    Код:
    RewriteRule ^news/([a-z0-9_-]+)/$ news/?view=$1 [L]
    И в браузере переходит, но новость не открывается. Остается главная страница. Видать нужно в скрипте где-то прописать еще?
     
  6. tirrex

    tirrex

    Регистр.:
    9 ноя 2008
    Сообщения:
    213
    Симпатии:
    60
    если хотите site.ru/news/pervaya-novost.html
    то тогда так, наверное:

    RewriteRule ^news/([a-z0-9_-]+)\.html$ news/?view=$1 [L]
     
  7. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    Не пашет. я же пишу - он В БРАУЗЕРЕ ПЕРЕХОДИТ, но НЕ показывает новость. Просто главная страница сайта.

    Видимо нужно еще в скрипте прописать чтобы не по id а по alt_name переходил.
     
  8. Denis5

    Denis5 Постоялец

    Регистр.:
    2 сен 2008
    Сообщения:
    98
    Симпатии:
    23
    Может быть у тебя код $_GET[view] а тебе надо $_GET[тайтл_новости]?

    Я думаю, что бы не переделывать и не возиться с левыми символа и mysql, проще
    RewriteRule ^news/([a-z0-9_-]+)/(.*)\.html$ news/?view=$1 [L]
     
  9. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    Не выходит. видать это бесполезно.
    по ссылке переходит а страницу не открывает. главная и все тут.
    Видимо тут без правки кода не обойтись.

    Спасибо всем кто оказал поддержку.
     
  10. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    RewriteRule ^([a-zA-Z0-9\-]+)/?$ news.php?section=$1 [QSA,L]
    RewriteRule ^([a-zA-Z0-9\-]+)/([0-9]+)\.html?$ news.php?section=$1&page=$2 [QSA,L]
    Это пример ...
    В твоем случае ссылка site.ru/news.php?view=1
    переделываешь на ЧПУ site.ru/news/pervaya-novost.html

    Код:
    RewriteRule ^news/([a-zA-Z0-9\-]+)\.html?$ news.php?view=$1[QSA,L]
    ;)
     
Статус темы:
Закрыта.