<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Разделы в поддомены</title>
		<link>https://www.cotonti.com</link>
		<description>Laatste forum onderwerpen</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Thu, 16 Apr 2026 16:17:48 -0000</pubDate>

		<item>
			<title>Kort</title>
			<description><![CDATA[<p>Да я и сам. How turn))</p>
]]></description>
			<pubDate>Wo, 08 Mei 2024 04:09:56 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/nl/forums?m=posts&q=9349&d=0#post48012]]></link>
		</item>
		<item>
			<title>Kopusha</title>
			<description><![CDATA[<p><strong>How turn page categories in to subdomains (make a virtual redirect from site.com/category to category.site.com)</strong><br />
<u><strong>1. Add the following content to the file functions.custom.php in the system folder:</strong></u></p>

<pre class="brush:php;">
&lt;?php
/**
 * Custom functions library
 */

defined('COT_CODE') or die('Wrong URL');

$subdomain_areas = array('docs', 'tutorials', 'blog');

/**
 * Changes  to / for List URLS
 *
 * @param array $args Args passed over from cot_url
 * @return string
 */

function list_url_structure(&amp;$args) {
	global $structure, $sys, $subdomain_areas;

	$catpath = explode('.', $structure['page'][$args['c']]['path']);
	$root_cat = array_shift($catpath);

	if (in_array($root_cat, $subdomain_areas)) {
		// Make the URL absolute and exclude root cat
		$subdomain = $root_cat;
		$path = implode('/', $catpath);
		$url = $sys['scheme'] . '://' . $subdomain . '.' . $sys['domain'] . '/' . $path;
	} else {
		$url = str_replace('.', '/', $structure['page'][$args['c']]['path']).'/';
	}
	unset($args['c']);
	unset($args['e']);
	return $url;
}

/**
 * Changes to / for Page URLS
 *
 * @param array $args Args passed over from cot_url
 * @return string
 */

function page_url_structure(&amp;$args) {
	global $structure, $sys, $subdomain_areas;

	(empty($args['c'])) &amp;&amp; $args['c'] = 'system';

	$catpath = explode('.', $structure['page'][$args['c']]['path']);
	$root_cat = array_shift($catpath);

	if (in_array($root_cat, $subdomain_areas)) {
		// Make the URL absolute and exclude root cat
		$subdomain = $root_cat;
		$path = implode('/', $catpath);
		(!empty($path)) &amp;&amp; $path .= '/';
		$url = $sys['scheme'] . '://' . $subdomain . '.' . $sys['domain'] . '/' . $path;
} else {
		$url = str_replace('.', '/', $structure['page'][$args['c']]['path']).'/';
	}

	if ($args['id']) {
		$url .= $args['id'];
		unset($args['id']);
	} elseif ($args['al']) {
		$url .= rawurlencode($args['al']);
		unset($args['al']);
	}
	unset($args['c']);
	unset($args['e']);
	return $url;
}
</pre>

<p><u><strong>2. Place the file subdomains.dat into the /plugins/urleditor/presets/ folder.</strong></u></p>

<pre class="brush:xml;">
page	m=*						page?m={$m}
page	c=system&amp;al=*			{$al}{!$c}
page	c=all					page
page	c=*&amp;al=*				{page_url_structure()}
page	c=*&amp;id=*				{page_url_structure()}
page	c=*						{list_url_structure()}
tags	a=all&amp;t=*		        {$_area}/{$t}{!$a}
tags	a=*&amp;t=*			        {$_area}/{$a}/{$t}
tags	t=*			            {$_area}/{$t}
index	*						{$_path}
plug	e=*						{$e}
plug	*                       {$_path}
users	m=details&amp;u=*			users/{cot_url_username()}
users	m=register				{$m}
users	m=profile				{$m}
users	m=passrecover			{$m}
login	*						{$_area}
message	*						{$_area}
admin	m=*						admin/{$m}
admin	*						{$_area}
rss		m=*&amp;c=*					{$_area}/{$m}/{$c}
rss		m=*&amp;id=*				{$_area}/{$m}/{$id}
rss		c=*						{$_area}/{$c}
rss		m=*						{$_area}/{$m}
*		c=*&amp;al=*				{$_area}/{cot_url_catpath()}/{$al}
*		c=*&amp;id=*				{$_area}/{cot_url_catpath()}/{$id}
*		c=*						{$_area}/{cot_url_catpath()}
*		al=*					{$_area}/{$al}
*		id=*					{$_area}/{$id}
*		*						{$_area}</pre>

<p>In the settings of the URLeditor plugin, choose the preset "subdomains".</p>

<p><u><strong>3. Enable loading of custom functions in config.php:</strong></u></p>

<p>$cfg['customfuncs'] = true;</p>

<p><em>After completing the above steps, all your links of the form site.com/docs will be rewritten to docs.site.com.</em></p>

<p><strong><u>4. However, for everything to work, you need to add A-records to the domain settings like this:</u></strong></p>

<pre class="brush:as3;">
docs.site.com    A    3600    YOUR_IP</pre>

<p>Repeat this for each subdomain section. Otherwise, you will encounter an error when opening a link with a subdomain.</p>
]]></description>
			<pubDate>Di, 07 Mei 2024 17:14:35 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/nl/forums?m=posts&q=9349&d=0#post48011]]></link>
		</item>
		<item>
			<title>Alex300</title>
			<description><![CDATA[<p>Хорошо бы это <a href="https://www.cotonti.com/docs/help/">добавить сюда</a>. Можно даже на русском, а в начале страницы добавить:</p>

<pre class="brush:as3;">
The page has not yet been translated into English. 
You can help with the translation...</pre>

<p>А если еще и с переводом - вообще блеск )</p>
]]></description>
			<pubDate>Di, 07 Mei 2024 06:49:31 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/nl/forums?m=posts&q=9349&d=0#post48010]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<p>Только, наверно, не прячем в 404, а перенаправляем через 301?</p>
]]></description>
			<pubDate>Ma, 06 Mei 2024 04:32:28 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/nl/forums?m=posts&q=9349&d=0#post48008]]></link>
		</item>
		<item>
			<title>Kopusha</title>
			<description><![CDATA[<p>Для чего мне надо будет - сайт турист.ком<br />
И на нем бангкок.турист.ком пекин.турист.ком и тд. Что бы не городить как раз общие базы и таблицы - делать это все виртуально. То есть имеем турист.ком/бангкок но его прячем в 404 а оставляем бангкок.турист.ком</p>
]]></description>
			<pubDate>Zo, 05 Mei 2024 21:24:54 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/nl/forums?m=posts&q=9349&d=0#post48007]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<p>Уже не помню где спрашивал Kopusha, так что выкладываю здесь то, что раскопал у себя:</p>

<p>Идея: преобразовать разделы в поддомены. Ну в смысле не преобразовать, а перенаправить и сообразно и глобально переписать на сайте ссылки.</p>

<h2>Шаг 1</h2>

<p>Добавляем в папку system файл functions.custom.php следующего содержания:</p>

<pre class="brush:php;">
&lt;?php
/**
 * Custom functions library
 */

defined('COT_CODE') or die('Wrong URL');

$subdomain_areas = array('docs', 'tutorials', 'blog');

/**
 * Changes  to / for List URLS
 *
 * @param array $args Args passed over from cot_url
 * @return string
 */

function list_url_structure(&amp;$args) {
	global $structure, $sys, $subdomain_areas;

	$catpath = explode('.', $structure['page'][$args['c']]['path']);
	$root_cat = array_shift($catpath);

	if (in_array($root_cat, $subdomain_areas)) {
		// Make the URL absolute and exclude root cat
		$subdomain = $root_cat;
		$path = implode('/', $catpath);
		$url = $sys['scheme'] . '://' . $subdomain . '.' . $sys['domain'] . '/' . $path;
	} else {
		$url = str_replace('.', '/', $structure['page'][$args['c']]['path']);
	}
	unset($args['c']);
	unset($args['e']);
	return $url;
}

/**
 * Changes to / for Page URLS
 *
 * @param array $args Args passed over from cot_url
 * @return string
 */

function page_url_structure(&amp;$args) {
	global $structure, $sys, $subdomain_areas;

	(empty($args['c'])) &amp;&amp; $args['c'] = 'system';

	$catpath = explode('.', $structure['page'][$args['c']]['path']);
	$root_cat = array_shift($catpath);

	if (in_array($root_cat, $subdomain_areas)) {
		// Make the URL absolute and exclude root cat
		$subdomain = $root_cat;
		$path = implode('/', $catpath);
		(!empty($path)) &amp;&amp; $path .= '/';
		$url = $sys['scheme'] . '://' . $subdomain . '.' . $sys['domain'] . '/' . $path;
} else {
		$url = str_replace('.', '/', $structure['page'][$args['c']]['path']) . '/';
	}

	if ($args['id']) {
		$url .= $args['id'];
		unset($args['id']);
	} elseif ($args['al']) {
		$url .= rawurlencode($args['al']);
		unset($args['al']);
	}
	unset($args['c']);
	unset($args['e']);
	return $url;
}
</pre>

<h2>Шаг 2</h2>

<p>В папку /plugins/urleditor/presets/ закидываем файл subdomains.dat</p>

<pre class="brush:plain;">
page	m=*						page?m={$m}
page	c=system&amp;al=*			{$al}{!$c}
page	c=all					page
page	c=*&amp;al=*				{page_url_structure()}
page	c=*&amp;id=*				{page_url_structure()}
page	c=*						{list_url_structure()}
tags	a=all&amp;t=*		        {$_area}/{$t}{!$a}
tags	a=*&amp;t=*			        {$_area}/{$a}/{$t}
tags	t=*			            {$_area}/{$t}
index	*						{$_path}
plug	e=*						{$e}
plug	*                       {$_path}
users	m=details&amp;u=*			users/{cot_url_username()}
users	m=register				{$m}
users	m=profile				{$m}
users	m=passrecover			{$m}
login	*						{$_area}
message	*						{$_area}
admin	m=*						admin/{$m}
admin	*						{$_area}
rss		m=*&amp;c=*					{$_area}/{$m}/{$c}
rss		m=*&amp;id=*				{$_area}/{$m}/{$id}
rss		c=*						{$_area}/{$c}
rss		m=*						{$_area}/{$m}
*		c=*&amp;al=*				{$_area}/{cot_url_catpath()}/{$al}
*		c=*&amp;id=*				{$_area}/{cot_url_catpath()}/{$id}
*		c=*						{$_area}/{cot_url_catpath()}
*		al=*					{$_area}/{$al}
*		id=*					{$_area}/{$id}
*		*						{$_area}</pre>

<h2>Шаг 3</h2>

<p>В config.php включаем подгрузку кастомных функций:</p>

<pre class="brush:as3;">
$cfg['customfuncs'] = true;</pre>

<p>В настройках плагина URLeditor выбираем пресет subdomains</p>

<h2>Шаг 4</h2>

<p>После всей этой истории все ваши ссылки вида site.com/docs будут переписаны на docs.site.com</p>

<p>Но чтобы все заработало, необходимо (как я предупреждал) добавить в настройки домена A-записи вида</p>

<pre class="brush:plain;">
docs.site.com	A	3600	ВАШ_IP</pre>

<p>И так для каждого раздела-поддомена. Иначе ожидаемо получим ошибку при открытии ссылки с поддоменом.</p>

<p>Можно использовать wildcards, но тогда будут доступны совершенно любые поддомены, что далеко не хорошо.</p>

<h2>Что дальше?</h2>

<p>Пока не сильно понятно. Сама идея с выносом чего-то на поддомен интересная. Например, если у вас "выстрелила" какая-то страница и тянет на себя тематический, но не совсем нужный трафик. Но то, что выше, ориентировано на разделы. Например, можно (возможно более корректно, но не совсем красиво) реализовать локализации на поддоменах en.site.com.</p>

<p>В любом случае, все утыкается в разворачивание еще одного сайта / сайтов на подомене. А дальше уже можно поиграться с общей базой и общими в ней таблицами. Пробуйте, кому интересно.</p>
]]></description>
			<pubDate>Za, 04 Mei 2024 13:12:15 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/nl/forums?m=posts&q=9349&d=0#post48006]]></link>
		</item>
	</channel>
</rss>