Внимание! Эта инструкция только для простых сайтов на Cotonti. Если вам нужно настроить ЧПУ для фриланс-биржи, то используйте другую инструкцию.
В данной инструкции мы постараемся разобраться каким образом сделать универсальные настройки для организации красивых человекопонятных ссылок на Cotonti и при этом учесть структуру разделов сайта не только для страниц, но и для форума. Для начала необходимо убедиться, что на вашем сервере имеется расширение mod_rewrite. Обычно оно установлено на всех нормальных хостингах.
Нам понадобиться установить на сайт штатный плагин Urleditor. С его помощью можно преобразовать ссылки на сайте так как вам нужно. Мы не будем использовать стандартный "удобный" режим. В данном режиме все работает замечательно, все страницы имеют ссылки согласно их расположению в структуре сайта, НО в данном режиме не работает ЧПУ для форума. Поэтому нам придется немного его переделать.
Данное руководство не является исключительным решением и пока проходит тестирование. Любые замечания и предложение оставляйте в комментариях либо на форуме.
Итак выполним следующие действия:
1. Создаем так называемый пресет-файл с нашими правилами для ссылок plugins/urleditor/preset/myconfig.dat Этот файл нужно создать с таким содержимым:
forums m=posts&q=&d= forums/{forums_url_structure()}/page{$d}
forums m=posts&q=* forums/{forums_url_structure()}
forums m=posts&id=* forums/{forums_url_structure()}
forums m=topics&s=&d= forums/{forums_url_structure()}/page{$d}{!$m}
forums m=topics&s=* forums/{forums_url_structure()}{!$m}
forums c=* forums/{$c}
forums * forums
page m=* page?m={$m}
page c=system&al=* {$al}{!$c}
page c=*&al=* {cot_url_catpath()}/{$al}
page c=*&id=* {cot_url_catpath()}/{$id}
page c=* {cot_url_catpath()}
index * {$_path}
plug e=tags&a=pages&t=* {$e}/{$t}{!$a}
plug e=tags&a=*&t=* {$e}/{$a}/{$t}
plug e=* {$e}
users m=details&u=* users/{cot_url_username()}
login * {$_area}
message * {$_area}
admin m=* admin/{$m}
admin * {$_area}
rss m=*&c=* {$_area}/{$m}/{$c}
rss m=*&id=* {$_area}/{$m}/{$id}
rss c=* {$_area}/{$c}
rss m=* {$_area}/{$m}
* c=*&al=* {$_area}/{cot_url_catpath()}/{$al}
* c=*&id=* {$_area}/{cot_url_catpath()}/{$id}
* c=* {$_area}/{cot_url_catpath()}
* al=* {$_area}/{$al}
* id=* {$_area}/{$id}
* * {$_area}
Пресет-файл устанавливает для движка правила отображения ссылок на сайте.
2. В директории system/ создаем файл functions.custom.php с кодом функции forums_url_structure() для подключения библиотеки дополнительных функций. Подключить его можно в конфиг-файле datas/config.php Для этого установите переменную:
$cfg['customfuncs'] = TRUE;
3. Теперь нам нужно немного дополнить файл .htaccess:
Например, изначально он содержит такие правила (у вас он может имет и другие строчки, но здесь показаны базовые, которые должны быть в любом сайте на Cotonti):
################ Cotonti Handy URLs for Apache #######################
# Below are the rules to be included in your main .htaccess file or httpd.conf
# Rewrite engine options
Options -Indexes
RewriteEngine On
# Server-relative path to Cotonti. Replace it with your path if you run Cotonti
# in a subfolder
RewriteBase "/"
# Language selector
RewriteRule ^(en|ru|de|nl)/(.*) $2?l=$1 [QSA,NC,NE]
# Sitemap shortcut
RewriteRule ^sitemap\.xml$ index.php?r=sitemap [L]
# Admin area and message are special scripts
RewriteRule ^admin/([a-z0-9]+) admin.php?m=$1 [QSA,NC,NE,L]
RewriteRule ^(admin|login|message)(/|\?|$) $1.php [QSA,NC,NE,L]
# System category has priority over /system folder
RewriteRule ^system/?$ index.php?rwr=system [QSA,NC,NE,L]
# All the rest goes through standard rewrite gateway
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]+) index.php?rwr=$1 [QSA,NC,NE,L]
Перед строчкой
# System category has priority over /system folder
Добавляем правила для форума:
# forums
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/topic([0-9]+)/page([0-9]+)?$ index.php?e=forums&m=posts&q=$2&d=$3 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/topic([0-9]+)?$ index.php?e=forums&m=posts&q=$2 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/post([0-9]+)?$ index.php?e=forums&m=posts&id=$2 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/([a-zA-Z0-9_%-]+)/page([0-9]+)?$ index.php?e=forums&m=topics&s=$2&d=$3 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/([a-zA-Z0-9_%-]+)/?$ index.php?e=forums&m=topics&s=$2 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_%-]+)/?$ index.php?e=forums&c=$1 [QSA,NC,NE,L]
RewriteRule ^forums/?$ index.php?e=forums [QSA,NC,NE,L]
4. После того как все приготовления выполнены, нужно включить наш новый набор правил в настройках плагина Urleditor. В настройках нужно выбрать "myconfig",
5. Если на сайте включен кэш, то его нужно очистить в разделе админки: Прочее -> Внутренний кэш.
Все, ссылки должны измениться согласно нашим новым настройкам.
Если ничего не вышло и сссылки не работают:
1. Очистите файл urltrans.dat или ваш пресет-файл.
2. Очистите таблицу cot_cache в базе данных (не удалять, а только очистить от данных).
Тогда ссылки вернутся в исходное состояние и можно попробовать настроить все заново.