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

Статус
В этой теме нельзя размещать новые ответы.

MAD-BOYT

Постоялец
Регистрация
22 Ноя 2007
Сообщения
78
Реакции
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=;
}
т.е. чтобы сократить код)))


Извените если гдето не правильно выразился.
Заранее спасибо, жду ответов))
 
посмотрите на Wordpress
у него в таблице сообщений сделано 2 поля
Title - новости
URL - url новости

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

Можно попробовать назначать каждой новости название автоматом, посмотрите плагин rus2lat для Wordpress.
 
За наводку на плагин спасибо.
Поле URL я уже давно сделал.(alt_name)
Но что нужно прописать в htaccess чтобы ссылки работали.
я пробовал вставлять в htaccess a-z вместо 0-9, но результата нет.
При наведении на ссылку на новость в браузере меняется название на мое поле избазы, но при нажатии перекидывает на главную. В htaccess ведь нечего на счет букв не прописано.
помогите ктонить плиз?!...
 
Попробуй так:

Код:
RewriteRule ^news/([a-z0-9_-]+) news/?view=$1 [L]
 
Нет. не пашет.
Выкидывает ошибку с ! знаком.

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

RewriteRule ^news/([a-z0-9_-]+)\.html$ news/?view=$1 [L]
 
Не пашет. я же пишу - он В БРАУЗЕРЕ ПЕРЕХОДИТ, но НЕ показывает новость. Просто главная страница сайта.

Видимо нужно еще в скрипте прописать чтобы не по id а по alt_name переходил.
 
Может быть у тебя код $_GET[view] а тебе надо $_GET[тайтл_новости]?

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

Спасибо всем кто оказал поддержку.
 
если хотите site.ru/news/pervaya-novost.html
то тогда так, наверное:

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

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]
;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху