Когда-то тут была подобная тема. Но сейчас я её не нашёл, поэтому создал новую. К модератору: если та тема не скрыта, перенесите это соощение в неё.
По теме. Стандартными способами в Двойке невозможно сделать страницы в корне сайта (с адресом типа site.ru/page.html) без указания типа контента в адресе. В некоторых случаях это создаёт проблемы при разработке. Зато можно попробовать вариант с заменой части адреса в htaccess. Идея в том, чтобы создать тип контента, который будет использоваться для подобных страниц. Назвать его, например, root. И потом в htaccess написать правила для RewriteRule, чтобы если в адресе есть строка '.html', то есть расширение с точкой, указывающее, что запрашивается страница, а не раздел, и при этом на втором и далее местах в строке отсутствует слеш '/', то есть, запрашиваемая страница находится в корне, тогда перед адресом страницы после домена сайта добавляем 'root/'
То есть, если приходит URI вида /page.html, то меняем его на /root/page.html. Естественно, делать это не редиректом, чтобы для пользователя адрес остался прежним, в корне сайта.
Особенности варианта:
1. Страницы должны быть только одного типа контента. В большинстве случаев этого хватает.
2. В htaccess нужно менять REQUEST_URI, так как все запросы страниц и раделов перенаправляются на index.php, а ядро потом определяет реальный адрес по REQUEST_URI.
У меня не хватает знаний по htaccess, сходу сделать так не получилось. Может кто-то сможет реализовать идею? Если это возможно, конечно.
Если это невозможно, тогда остаётся только хак ядра, что не очень хорошо.
Как вариант для разработчиков InstantCMS 2 для будущих версий, можно будет сделать опцию в настройках, где админ сможет указать тип контента, который будет использоваться в случае, если запрашивается страница без типа, то есть, страница из корня сайта.
#2
26 июля 2014 в 02:41
Долго мучился с .htaccess ничего так и не получилось, вероятно из за структуры разбора URI движком инстанта...
Но вопрос можно решить хаком. Дописываем в файле \system\core\core.php в функции route($uri) на 574 строке вместо:
следующее:
Но вопрос можно решить хаком. Дописываем в файле \system\core\core.php в функции route($uri) на 574 строке вместо:
// Определяем контроллер из первого сегмента // Определяем действие из второго сегмента // Определяем параметры действия из всех остальных сегментов }
// Добавляем проверку на количество передаваемых параметров... if (sizeof($segments)==1) { // Если оказался один параметр, предполагаем что это статическая страница $this->uri_controller = 'pages'; // жестко вписываем имя контроллера $this->uri_action = $segments[0]; // и передаем аргумент } else { // в противном случае работаем как и задумано // Определяем контроллер из первого сегмента // Определяем действие из второго сегмента // Определяем параметры действия из всех остальных сегментов } }
#3
26 июля 2014 в 12:38
Спасибо, Val, хак работает. Страницы доступны и по сокращённому адресу (в корне сайта), и по старому полному. При этом остаётся возможность редактировать и удалить страницы обычным способом.
Решение найдено. В принципе, можно было бы закрывать тему. Но подожду немного, может кто-то сможет сделать то же самое через .htaccess. Мне кажется, что для непрограммистов менять что-то в .htaccess проще, чем в скриптах. Да и при обновлении системы хаки теряются и их нужно делать заново.
Решение найдено. В принципе, можно было бы закрывать тему. Но подожду немного, может кто-то сможет сделать то же самое через .htaccess. Мне кажется, что для непрограммистов менять что-то в .htaccess проще, чем в скриптах. Да и при обновлении системы хаки теряются и их нужно делать заново.
Сегодня в 18:54
#4
26 июля 2014 в 15:08
Если вам нужно "не стандартное" поведение системы, вам придется изменять Ядро и следующие обновления проводить в ручном режиме.Да и при обновлении системы хаки теряются и их нужно делать заново.
У меня просто вопрос: Какая разница между mysite.ru/page.html и mysite.ru/page/page.html?
С точки зрения SEO-оптимизации — разницы никакой. А вот когда проект подрастет и наполнится контеном, когда вы в него вложите Н-челочасов, случайно обновится и развалится сайт — в это время вы пожалеете что придумали подобные не нужные изменения.
#5
26 июля 2014 в 15:32
Вы по-своему правы, sofcom, любые нестандартные вещи на сайте в будущем могут создать проблемы. Но ведь это не повод для отказа от них, если это нужно, верно? Вместо этого можно поискать наиболее простые и надёжные варианты решения, что мы сейчас и делаем
А задачи бывают разные. Иногда заказчики хотят видеть страницы в корне сайта, иногда переводится на новую CMS существующий сайт с сохранением старых страниц по их прежним адресам. Да мало ли какие нужды бывают. Поэтому лучше иметь возможность выбора как сделать желаемое, чем не иметь её.
С точки зрения СЕО — спорный вопрос. Все современные поисковики прекрасно переваривают и выводят в выдачу страницы с любыми адресами, даже без ЧПУ. Но адреса с ЧПУ нагляднее, в том числе и для пользователей в результах выдачи. И как по мне, так некоторые адреса в корне смотрятся лучше. Например, site.ru/about.html в корне выглядит проще и понятнее, чем site.ru/pages/about.html в непонятном разделе pages. Это моё субъективное восприятие, конечно. Каждый воспринимает по-своему. Но и это тоже вполне подходящая причина иметь возможность выбора разных вариантов для разных пользователей.
А задачи бывают разные. Иногда заказчики хотят видеть страницы в корне сайта, иногда переводится на новую CMS существующий сайт с сохранением старых страниц по их прежним адресам. Да мало ли какие нужды бывают. Поэтому лучше иметь возможность выбора как сделать желаемое, чем не иметь её.
С точки зрения СЕО — спорный вопрос. Все современные поисковики прекрасно переваривают и выводят в выдачу страницы с любыми адресами, даже без ЧПУ. Но адреса с ЧПУ нагляднее, в том числе и для пользователей в результах выдачи. И как по мне, так некоторые адреса в корне смотрятся лучше. Например, site.ru/about.html в корне выглядит проще и понятнее, чем site.ru/pages/about.html в непонятном разделе pages. Это моё субъективное восприятие, конечно. Каждый воспринимает по-своему. Но и это тоже вполне подходящая причина иметь возможность выбора разных вариантов для разных пользователей.
#6
26 июля 2014 в 16:18
Я у себя на сайте решил поменять pages на info, с помощью стандартного механизма iCMS2, о котором рассказывал r2. Получится site.ru/info/about.html, в моем случае вполне приемлемо))Например, site.ru/about.html в корне выглядит проще и понятнее, чем site.ru/pages/about.html в непонятном разделе pages.
#7
26 июля 2014 в 16:37
Ага, это решает задачу для новых сайтов. Я тоже буду стараться делать таким образом. Но для обновления CMS на старых это не всегда подойдёт. Хотя и там можно обойтись без хака, понаделывать 301-х редиректов в .htaccess, если страниц немного.
В хаке ошибочку нашел . Нужно дополнительно проверять, что вызывается html страница, а не просто считать количество передаваемых параметров )). В противном случае не будут работать ссылки типа sitename.ru/activity или sitename.ru/posts.
Вот исправленная версия:
Вот исправленная версия:
$this->uri_controller = 'pages'; $this->uri_action = $segments[0]; } else { // Определяем контроллер из первого сегмента // Определяем действие из второго сегмента // Определяем параметры действия из всех остальных сегментов } }
#9
26 июля 2014 в 18:08
Спасибо за исправление Val! Проверил. Таки да, активность без исправления не работала. Теперь всё нормально. 😊
WebMan, Может я что-то неправильно понял, но у меня все нормально открывается, без всяких:
nashaliga.com.ua/onlytime.html — тут я записываю среднее время загрузки страницы
nashaliga.com.ua/onlytime.html — тут я записываю среднее время загрузки страницы
#11
28 июля 2014 в 19:39
Александр, не совсем понятно про что именно Вы написали? Если Вы пишите про "Активность" на указанном Вами сайте, то да, она работает, и возникает вопрос: применяли ли Вы хак из этой темы и если да, то первый или второй вариант?
Пишите подробнее, пожалуйста. Вас будет легче понять.
Что касается указанной Вами странички, то судя по её коду она открывается в обход движка ICMS, напрямую с диска. Хак тут непричём.
Пишите подробнее, пожалуйста. Вас будет легче понять.
Что касается указанной Вами странички, то судя по её коду она открывается в обход движка ICMS, напрямую с диска. Хак тут непричём.
#12
29 июля 2014 в 18:42
WebMan, А, всё, я таки понял о чем тема. Да, я просто залил страницу в корень сайта. Если говорить по теме — то я пожалуй бы выбрал вариант с htaccess файлом
кто подскажет, как создавать страницы в корне сайта v2.0… вида /page.html?
#14
13 августа 2014 в 20:14
Для lezginka.ru. Страницы в корне сайта v2.0 пока можно делать только хаком от Val, описанным им в этой теме в #8. Способ без хака пока не нашли.
Этот хак все страницы в корне сайта считает страницами с типом контента 'pages'. То есть, site.ru/about.html в корне — это на самом деле страница site.ru/pages/about.html. Таким образом можно сделать сколько угодно страниц с типом 'pages' и потом поделать ссылки на них из корня, без папки с категорией.
Этот хак все страницы в корне сайта считает страницами с типом контента 'pages'. То есть, site.ru/about.html в корне — это на самом деле страница site.ru/pages/about.html. Таким образом можно сделать сколько угодно страниц с типом 'pages' и потом поделать ссылки на них из корня, без папки с категорией.
#15
6 сентября 2014 в 23:57
Тоже начал смотреть это, тут при обновлении движка core.php 100% слетит, что не есть хорошо, а вот механизм который R2 заложил по переименовыванию ссылок в файле ../system/config/remap.php можно попробовать использовать docs.instantcms.ru/manual/settings/rewriting, нужно написать функцию в этом файле которая скажет, что /pages/ => на корень сайта, нужно сначала написать перменую корня сайта, а потом сказать что /pages/ => /$home ну как то так мое видение этого дела…