Forums / National / Russian / Mod Rewrite

<<<1234>>>

Sergeich
#31 2010-04-07 18:20
Траст, могу предложить сделать как в вордпрессе - там по умолчанию предлагают юзерам использовать несколько готовых вариантов краивых ссылок, нажал кнопку - сайт работает на новых ссылках. Жалко выкидывать такой навороченный инструмент. Всё что нужно - это внести в дефолтную поставку пару вариантов готовых красивых урлов (можно даже отдельным плагином), а остальное пусть работает как работает, кому надо смогут заморочить что угодно, а такие ламеры как я нажмут кнопочку и получат результат :).

Кстати. пытаюсь на реальный хостинг (мастерхост) поставить кота с киллеровским модреврайтом, после выполнения всех действий по установке выдаётся 500 ошибка, а в логе сервера пишет
[Wed Apr 7 14:05:12 2010] [alert] [client 62.140.ххх.ххх] /home/u0000/site.com/www/.htaccess: RewriteRule: cannot compile regular expression '^([^/&?#]+)/([a-zA-Z0-9-_]+)/$'\n
это что ему не нравится?
Killer
#32 2010-04-08 20:03
Не знаю в чем проблема, у меня работает. Может опция mod rewrite не включена на хостинге? Тогда бы косяк шел бы с первой строки.
Лишь утратив всё до конца, мы обретаем свободу...
Spy
#33 2010-04-08 22:59
Нет, лишать возможности поиграться с мод-реврайтом не надо. Бывает переносишь сайт какой-то на котонти и хочется сделать, чтобы хотя бы часть страниц была по прежним адресам. Кроме того бывает, что стандартные наборы урлов попадают в "немилость" у ПС.
Ещё волнует вопрос, нужно реализовать урлы на русском языке, реально ли? Сейчас у меня на одном из сайтов стоит цмс, где это реализовано.

Добавлено 5 дней спустя:

урл страницы:
http://www.cotonti.com/news/community/1

http://www.cotonti.com/news/fucking-shit/1
http://www.cotonti.com/downloads/piece/of/shit/1
это плохо
This post was edited by Spy (2010-04-14 22:26, 14 years ago)
Dayver
#34 2010-05-08 01:16
Весь топик не осилил но походу ни в варианте Киллера ни в мануале cotonti.com/docs/en/admin/url_modification нет правил для плуга тегов ... хочу поделится своим решением если кому пригодится

1. в urltrans.dat
plug	e=tags&a=*	{tags_url()}

2. в functions.custom.php
function tags_url(&$args, &$spec)
{
	$url = $args['e'].'/'.$args['a'].'/'.urlencode($args['t']);
	unset($args['e']);
	unset($args['a']);
	unset($args['t']);

	return $url;
}

3. в .htaccess
RewriteRule ^tags/(all|pages|forums)/([^?]+)$ plug.php?e=tags&a=$1&t=$2 [QSA,NC,NE,L]

Решение работает тут crypto.net.ua. Можно и иначе реализовать но и так работает
Pavlo Tkachenko aka Dayver
This post was edited by Dayver (2010-05-08 01:29, 14 years ago)
Chiaroscuro
#35 2010-07-15 22:00
pm.php данные настройки, я так понимаю, не обрабатывают?
Sergeich
#36 2010-07-18 13:05
Фигня какая-то, уже второй хостинг пробую и снова косяки с ЧПУ, делаю простейший вариант только для страниц
Модули                    Параметры                                      Формат
 page                           id=*                                        page/{$id}.shtml
 page                           al=*                                        page/{$al}.html
Всё что надо и где надо прописывается, а страницы не открываются, пишет ошибку msg=950. Я уже не знаю что тут может не работать. Модреврайт точно включен, в соседней папке нормально работает ЧПУ для седитио. На локалке вроде бы работает (хотя сложный вариант как-то замороченно), на другом хостинге простой вариант ЧПУ в котонти работает, сложный нет. Я удручён.
Killer
#37 2010-07-18 16:37
А такой вариант тебя не устроит, Сергеич? У меня все работает.
В urltrans.dat
page * {page_url_structure()}

В functions.custom.php
function page_url_structure(&$args)
{
	global $sed_cat, $pag, $row, $rpagecat, $c, $newpagecat;

	if(stristr('docs-', $pag['page_cat']) || stristr('docs-', $row['page_cat']) || stristr('docs-', $rpagecat))
	{
		$page_cat = (!empty($rpagecat) && empty($page_cat)) ? $rpagecat : $page_cat;
		$page_cat = (!empty($pag['page_cat']) && empty($page_cat)) ? $pag['page_cat'] : $page_cat;
		$page_cat = (!empty($row['page_cat']) && empty($page_cat)) ? $row['page_cat'] : $page_cat;
		//$page_cat = (!empty($args['c']) && empty($page_cat)) ? $args['c'] : $page_cat;
		$page_cat = (!empty($newpagecat) && empty($page_cat)) ? $newpagecat : $page_cat;
	}
	else
	{
		$page_cat = (!empty($sed_cat[$rpagecat]['path']) && empty($page_cat)) ? $sed_cat[$rpagecat]['path'] : $page_cat;
		$page_cat = (!empty($sed_cat[$pag['page_cat']]['path']) && empty($page_cat)) ? $sed_cat[$pag['page_cat']]['path'] : $page_cat;
		$page_cat = (!empty($sed_cat[$row['page_cat']]['path']) && empty($page_cat)) ? $sed_cat[$row['page_cat']]['path'] : $page_cat;
		//$page_cat = (!empty($sed_cat[$args['c']]['path']) && empty($page_cat)) ? $sed_cat[$args['c']]['path'] : $page_cat;
		$page_cat = (!empty($sed_cat[$newpagecat]['path']) && empty($page_cat)) ? $sed_cat[$newpagecat]['path'] : $page_cat;
	}

	if (empty($page_cat)) $page_cat = 'articles';
	if($args['id'])
	{
		$url = (stristr('docs-', $page_cat)) ? str_replace('-', '/', $page_cat).'/' : str_replace('.', '/', $page_cat).'/';
		$url .= $args['id'];
		unset($args['id']);
	}
	elseif($args['al'])
	{
		$url = (stristr('docs-', $page_cat)) ? str_replace('-', '/', $page_cat).'/' : str_replace('.', '/', $page_cat).'/';
		$url .= urlencode($args['al']);
		unset($args['al']);
	}
	elseif($args['m'] == 'add')
	{
		$args['c'] = (!empty($args['c'])) ? $args['c'] : $c;
		$url = (stristr('docs-', $args['c'])) ? str_replace('-', '/', $args['c']).'/' : str_replace('.', '/', $sed_cat[$args['c']]['path']).'/';
		$url .= 'add';
		unset($args['c'], $args['m']);
	}
	return $url;
}
Лишь утратив всё до конца, мы обретаем свободу...
Sergeich
#38 2010-07-18 21:53
А что в .htaccess писать?

Добавлено 23 Минуты спустя:

Блин, запустил на котонти плагин ЧПУ от седитио, всё нормально работает. Почему же родной котовский модреврайт не желает заводиться?
This post was edited by Sergeich (2010-07-18 22:17, 13 years ago)
Trustmaster
#39 2010-07-19 02:47
950 ошибка странная, возникает обычно при отправке формы. А в .htaccess что?
May the Source be with you!
Killer
#40 2010-07-19 04:05
сорри, забыл написать.
.htaccess
RewriteRule ^([^/&?#]+)/([0-9]+)$ page.php?id=$2 [QSA,NC,NE,L]
RewriteRule ^([^/&?#]+)/([a-z-]+)/([0-9]+)$ page.php?id=$3 [QSA,NC,NE,L]
RewriteRule ^([^/&?#]+)/([a-z-]+)/([a-z-]+)/([a0-9]+)$ page.php?id=$4 [QSA,NC,NE,L]
RewriteRule ^([^/&?#]+)/([a-zA-Z0-9-_]+)$ page.php?al=$2 [QSA,NC,NE,L]
RewriteRule ^([^/&?#]+)/([a-z-]+)/([a-zA-Z0-9-_]+)$ page.php?al=$3 [QSA,NC,NE,L]
RewriteRule ^([^/&?#]+)/([a-z-]+)/([a-z-]+)/([a-zA-Z0-9-_]+)$ page.php?al=$4 [QSA,NC,NE,L]
Лишь утратив всё до конца, мы обретаем свободу...
Sergeich
#41 2010-07-19 08:22
# Trustmaster : 950 ошибка странная, возникает обычно при отправке формы. А в .htaccess что?
Траст, всё создаётся стандартными средствами движка, на голом движке 069 вообще без модификаций, по инструкции с этого сайта http://www.cotonti.com/docs/en/admin/url_modification. Вот что в urltrans.dat
page	al=*	{$_area}/{$al}
page	id=*	{$_area}/{$id}
*	*	{$_area}.php
в .htaccess
# Rewrite engine options
Options FollowSymLinks -Indexes
RewriteEngine On
# Server-relative path to seditio:
RewriteBase "/"
RewriteRule ^(datas|images|js|skins)/(.*)$ $1/$2 [QSA,NC,NE,L]
RewriteRule ^page/([^/&?#]+)(.*)$ page.php?al=$1$2 [QSA,NC,NE,L]
RewriteRule ^page/([^/&?#]+)(.*)$ page.php?id=$1$2 [QSA,NC,NE,L]
при таком варианте страницы с алиасом открываются нормально, страницы с ID - ошибка 950. Редактирование работает нормально, но при создании страницы (после нажатия кнопки отправить)- ошибка 950, при этом страница создаётся.

Киллер, попробовал твой вариант, страницы открываются, но при попытке создать новую страницу (при нажатии на ссылку "создать страницу")- ошибка 950, редактирование работает нормально.

если что, хостер http://www.komtet.ru/, phpinfo - http://cotonti.pereslavl.me/info.php
Trustmaster
#42 2010-07-19 13:33
при таком варианте страницы с алиасом открываются нормально, страницы с ID - ошибка 950.
Если посмотреть на правила .htaccess, то сразу понятно почему - правила одинаковые и он перебрасывает страницы с id на таковые с алиасом, например page.php?al=123 вместо page.php?id=123. Тут встроенный редактор не справился, потому что он не знает об ограничениях типов данных в атрибутах, так что придётся подправить вручную:
# Rewrite engine options
Options FollowSymLinks -Indexes
RewriteEngine On
# Server-relative path to seditio:
RewriteBase "/"
RewriteRule ^(datas|images|js|skins)/(.*)$ $1/$2 [QSA,NC,NE,L]
RewriteRule ^page/([0-9]+)(.*)$ page.php?id=$1$2 [QSA,NC,NE,L]
RewriteRule ^page/([^/&?#]+)(.*)$ page.php?al=$1$2 [QSA,NC,NE,L]
Строчка с id должна проверяться раньше, иначе жадные алиасы её съедят.
May the Source be with you!
Sergeich
#43 2010-07-20 03:28
Trustmaster, предлагаю в будущих версиях убрать вебинтерфейс создания правил, но оставить urltrans.dat и .htaccess, т.к. именно их и юзает большинство для создания своих вариантов ЧПУ. При этом мы исключаем криворуких товарищей (типа меня) которые кривыми правилами ломают весь свой сайт :), но оставим профи инструмент для гибкой настройки ЧПУ. Да и меняться вариантами ЧПУ так будет удобнее. Я бы ещё подумал над functions.custom.php, чтобы реализовать в коде некий вариант, который сможет закрыть 99% потребностей вебмастеров, и переименовать этот файл в modrewrite.php :).

Добавлено 10 Минут спустя:

О, кстати, Spy интересный момент отметил, как такое забороть? поисковики могут обидеться на такие чудеса умножения кол-ва страниц, да и не только поисковики.
урл страницы:
http://www.cotonti.com/news/community/1

http://www.cotonti.com/news/fucking-shit/1
http://www.cotonti.com/downloads/piece/of/shit/1
это плохо
This post was edited by Sergeich (2010-07-20 03:38, 13 years ago)
Alex300
#44 2010-07-20 04:12
Да не стоит убирать Web-интерфейс. Лучше было бы сделать пресетов. Установил презет и большая часть потребностей решена. А через Web-интерфейс можно добовлять некоторые спецефические настройки.
Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Sergeich
#45 2010-07-20 04:25
Alex300, не получается через вебинтерфейс добавлять некоторые специфические настройки (только самые что ни на есть простые, да и тут легко запутаться пример в моём случае), всё равно придётся лезть ручками как минимум в .htaccess. Может быть и можно продолжить дорабатывать веб-интерфейс, но только как отдельный плагин, как часть дефолтной поставки он пока не годится.

<<<1234>>>