ЧПУ для Fusion

Переменные юзаем.
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->#страница
RewriteRule ^page([0-9]*).html viewpage.php?page_id=$1

#новость
RewriteRule ^news([0-9]*).html news.php?readmore=$1
RewriteRule ^ncat.html news_cats.php
RewriteRule ^print([0-9]*).html print.php?type=N&item_id=$1<!--c2--></div><!--ec2-->
И т.д. и т.п. :lol:
А потом в сорцах правим.
 
Кстати, тема ещё актуальна :lie:

я вот так и не понял что править в сорцах
 
Теперь понял B)

Уже сделал себе нормальные ссылки в сатьях:
- <a href="http://pronets.ru/articles.html" target="_blank">http://pronets.ru/articles.html</a>
- <a href="http://pronets.ru/articles_1.html" target="_blank">http://pronets.ru/articles_1.html</a>
- <a href="http://pronets.ru/readarticle_2.html" target="_blank">http://pronets.ru/readarticle_2.html</a>
Причём это не в ручную всё прописывал а автоматом так стали все статьи и при написани новой будет подобный адрес.

Далее сделал ссылки в файловом архиве:
- <a href="http://pronets.ru/downloads.html" target="_blank">http://pronets.ru/downloads.html</a>
- <a href="http://pronets.ru/downloads_10.html" target="_blank">http://pronets.ru/downloads_10.html</a>
А вот далее у меня чё то не получилось: :(
- <a href="http://pronets.ru/downloads.php?view=111" target="_blank">http://pronets.ru/downloads.php?view=111</a>
 
<b>ЧПУ для новосетй:</b>


Для начала настроем сервер для того чтобы он понимал что делать с новыми ссылками. В состав Apache по умолчанию входит модуль mod_rewrite. Он включен почти на всех платных хостингах. Уточнить если у вас он или нет можно у хостера. Ну или потом когда работать ни чего не будет. =)

Для управления ссылками нам понадобится файл .htaccess в корне сайта. После того как создали его, открываем и начинаем писать в него =). Самая первая строчка должна содержать

RewriteEngine on

С помощью нее мы указываем на то, что требуется включить движок переписывания (в дословном переводе).
Далее мы должны указать строчки для работы ЧПУ для новостей.

##Работа с новостями
RewriteRule ^news_([0-9]{1,15}).html?$ /news.php?readmore=$1 [L]

Разберем эти 2 строчки.
Первая строчка служит комментарием для чего предназначена следующая строка. Это сделано для удобства. 2 строчка задает правило переписывания, что задается словочетанием RewriteRule. Значок ^ обозначим начало вида ссылки который мы хотим увидеть соответственно ?$ обозначает конец.

Сам вид ссылки требует так разбирательства. Первая чать news_ думаю понятна. А вот ([0-9]{1,15}) обозначает что здесь будет находится число содержащие числа от 0 до 9 и имеющие длину от 1 до 15 символов. Т.е. здесь у нас будет id новости, который мы привыкли видеть после readmore=. Если вы по каким либо причинам не желаете видеть цифры или кроме цифр вы будете использовать что-то другое то можно поставить ([^\/]*)(\/?) – эта вещь подразумевает что будут использоваться различные символы. Ее нельзя ставить перед знаком подчеркивания ибо он войдет в состав перемой. Перед этой переменной советую использовать тире. После знаков ?$ идет ссылка на оригинальный файл которому следует передать переменную. Знак $1 обозначает что на его место должна встать переменная в фальшивом URL т.е. в нашем случае сюда подставится число которое будет указано после news_.
Если мы хотим передать 2 переменные например news_576-title-Vushla_novay_OS.html то строчка должна выглядеть так:

RewriteRule ^news_([0-9]{1,15})-title-([^\/]*)(\/?).html?$ /news.php?readmore=$1&title=$2 [L]

Думаю смысл понятен. Теперь что обозначает [L] – данной штучкой мы указываем что серверу делать с этим правилом.

L – обозначает что нам надо просто передать переменную в исходный файл, отдать пользователю исходный файл (в данном случае news.php с перменной),но при этом пользователь должен видеть url типа news_576.html

R- функция редеректа. Т.е. пользователь вводит news_576.html и его перенаправляют на news.php?readmore=576. URL в адресной строке поменяется на news.php?readmore=576.
В принципе имеется еще достаточное кол-во функций. Ну если захотите с ними ознакомится то добро пожаловать в мат часть по апачу. Все с этим пунктом закончили пора переходить к редактированию файла news.php.
Открываем его и ищем строчки содеражищие “.FUSION_SELF.”?readmore=”.$news_info[news_id].” Т.е. если целиком то выдолжны искать <a href='".FUSION_SELF."?readmore=".$news_info['news_id']."'>. Лично я нашел это в 66,67,85,86. Это и есть ссылка на страницу с новость. Ее нам надо превести к нужному нам виду. Что бы не мучится с редактмированием и т.д. напишем ссылку сами т.е. удаляйте
<a href='".FUSION_SELF."?readmore=".$news_info['news_id']."'>
И пишите вместо этого вот это:
<a href='news_".$news_info['news_id']. ".html'>.
Производим это действие со всеми 4 строчками.

Далее нам надо будет изменить еще 2 строчки для полного счастья.

if ($data['news_allow_comments']) showcomments("N","news","news_id",$readmore,FUSION_SELF."?readmore=$readmore");

if ($data['news_allow_ratings']) showratings("N",$readmore,FUSION_SELF."?readmore=$readmore");

Номера этих строчек 159 и 160 соотвественно.
Эти строчки необходимо заменить на:

if ($data['news_allow_comments']) showcomments("N","news","news_id",$readmore,"news_$readmore.html");

if ($data['news_allow_ratings']) showratings("N",$readmore, "news_$readmore.html");

Эти строчки отвечают за вывод комментариев и рейтингов. Для чего мы их меняем? А для того что бы пользователя после того как он оставил комментарий или рейтинг не перебросило на адрес вида news.php?readmore=576 а вернуло на news_576.html.
 
Сверху