настраиваемое ЧПУ в SMF

Автор azsx, 21 сентября 2012, 12:02:06

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

azsx

Мне надо получить ссылки вида:
www.site.ru/forum/1.html
www.site.ru/forum/2.html
и т.д., вместо
www.site.ru/smf/index.php/topic,1.0
www.site.ru/smf/index.php/topic,2.0
при этом при переходе по родным ссылкам (www.site.ru/smf/index.php/topic,1.0) надо получать 404 ошибку.
Есть ли способ настроить вывод урлов таким образом? Как это сделать? Сколько это стоит?
Обратите, пожалуйста, внимание верхние ссылки принципиально важны в связи с переездом. Отдача 404 ошибки - принципиально важна.
зы
уточнил по просьбе http://www.simplemachines.ru/index.php?topic=15160.msg118364#msg118364

maestrosite.ru

Цитата: azsx от 21 сентября 2012, 12:02:06
www.site.ru/forum/1.html
...
www.site.ru/smf/index.php/topic,1.0
То есть форум в одной папке, а вы хотите в адресах указать другую. Так?
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

azsx

#2
maestrosite.ru это в частности тоже нужно (как просто нормально настроенный чпу), но это не принципиально, я могу физически перенести форум в папку /forum/
Самое главное это именно урлы 1.html, 2.html, 3.html, ..., 6500.html, 6501.html
ps
подумал, а если я изначально запишу форум смф в корень? Мне все равно нужен механизм формирования урл типа:
www.site.ru/forum/1.html
www.site.ru/forum/2.html

GeorG

Цитата: azsx от 24 сентября 2012, 02:50:16а если я изначально запишу форум смф в корень? Мне все равно нужен механизм формирования урл типа
Да
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

maestrosite.ru

www.site.ru/smf/index.php/topic,1.0.html - а нолик вы как хотите передавать? То есть разбиение на страницы как организовываете?
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

Nitro

Меня запятая в ЧПУ тоже сильно раздражает:(

azsx

Цитироватьwww.site.ru/smf/index.php/topic,1.0.html - а нолик вы как хотите передавать? То есть разбиение на страницы как организовываете?
на первой странице мне нолик не нужен совсем! то есть первая страница 1.html и никак иначе. Последующие страницы как будут отображаться - не имеет значения, сейчас отображаются 1.html?page=1 и т.п.

maestrosite.ru

#7
чуднО, конечно, но пробуйте, так ли надо:
В файле /Sources/QueryString.php найдите строку
// Let's do something special for session ids!


и замените после неё условия:

$scripturl2 = '/forum';
if (defined('SID') && SID != '')
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?(?:' . SID . '(?:;|&|&))(?:topic)=([^#"]+?)\.([^#"]+?)(#[^"]*?)?"/e',
"'\"' . \$scripturl2 . '/' . strtr('\$1', '&;=', '//,') . '.html?' . SID . (('\$2' === '0') ? '' : ';start=\$2') . '\$3\"'", $buffer);
else
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?(?:topic)=([^#"]+?)\.([^#"]+?)(#[^"]*?)?"/e',
"'\"' . \$scripturl2 . '/' . strtr('\$1', '&;=', '//,') . '.html' . (('\$2' === '0') ? '' : '?start=\$2') . '\$3\"'", $buffer);



Соответственно, в папке /forum/ разместите .htacess :
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).html smf/index.php?topic=$1 [L,QSA]

с правильными путями!


При включеном форумном SEF урлы для topic будут преобразовываться:
/smf/index.php?topic=NNN.MMM;qs#hash ---> /forum/NNN.html?start=MMM;qs#hash

частный случай:
/smf/index.php?topic=NNN.0 ---> /forum/NNN.html

при этом остальные адреса не будут затрагиваться, в том числе для board=YYY.ZZZ


upd
+ для получения 404-й надо поправить .htaccess в /smf/ чтобы подставить вашу 404-ю страницу:
RewriteRule ^index.php/topic _ваша_404_с_правильным_кодом_ответа [L]

+ можно приводить в соответствие
?page=1 ---> ?start=15

upd2
по какой причине не хотите 301-й использовать?

upd3
Поступило замечание, что это "предложение о работе", а не ярмарка бесплатных советов, значит надо исправиться. По поводу оплаты и детали реализации - в ЛС.
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru