Super MODx SEO-strict +ускоряем фронтенд
Михаил задал вопрос про канонизацию урлов в MODx.
Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.
Поехали.
Вопрос канонизации урлов в MODx'е я изучал досконально.
I. MODx'овая система канонических урлов позволяет делать правильные автоматические редиректы на канонические урлы со всех возможных не канонических только в одном случае — это когда у ресурсов-контейнеров нету слеша на конце, а у ресурсов-неконтейнеров не установлено расширение, типа ".html".
Т.е. после всех манипуляций все урлы на сайте будут вида:
А действий не так много.
Идём в настройки и меняем следующее:
— Раздел «Дружественные URL»:
1. container_suffix «Суффикс контейнера» — делаем значение пустым;
2. friendly_urls «Использовать дружественные URL» — Да;
3. friendly_urls_strict «Строгий режим дружественных URL» — Да;
Автоматическая генерация, транслитерация, вложенные URL, дублирование во всех контекстах — устанавливаем по вкусу
— Раздел «Сайт»:
4. link_tag_scheme «Схема URL» — abs;
— Раздел «Шлюз»:
5. request_method_strict «Строгий метод запроса» — Да;
Потом идёт в «Сайт» => «Типы содержимого»:
6. HTML text/html — делаем значение пустым.
Вуаля. 6 шагов.
p.s. и удаляйте нахрен тег
Зато минусов хватает — новички, не понимая основу основ, постоянно об него спотыкаются и задают вопросы в стиле «А почему у меня стили не грузятся?» тем самым забивая и без того забитое информационное пространство.
Да ещё якорные-ссылки из-за этого тега ломаются.
В общем, первым делом убирайте его из стандартного шаблона и в своих шаблонах не прописывайте.
II. Далее в каждом шаблоне внутри тега head пишем:
Всё, добили seo-strict канониклом.
Но и этого, в своё время мне показалось мало.
III. Конфиг для nginx'а.
Скажу сразу, что для тех, кто использует апач — мне предложить нечего, извините.
Сразу ссылка: gist.github.com/antixrist/cf12d6b49367979ef622
И сразу дисклеймер: в этом конфиге нужно заменить DOMAIN.TLD на ваш домен (в нижнем регистре, разумеется) и заменить your-backend. Кто настраивал — разберётся.
Так вот, давайте я вам расскажу что здесь и как.
Все преобразования урлов происходят с учётом nginx'ового феншуя и правильности с т.з. seo. В этом не сомневайтесь.
— Код.
Редиректим с www. домена на «без www.»
— Код.
Автоматически направляем все поддомены на основной домен. Не забудьте в dns добавить CNAME запись вида:
— Код.
Прописываем индексные файлы.
— Код, код.
настраиваем обработку php-файлов.
p.s. о регулярке ^/(adminka|manager|connectors|connectors-[_A-Z-a-z-0-9]+|_build)/ будет дальше.
— Код.
Закрываем доступ к папке /core/ из вне. Я настроил так, чтобы при попытке обратиться к какому-либо файлу из этой директории, отдавалась 404, а не 403. Если вас это не устраивает, то вы можете раскомментировать вот эту строчку, закомментировав вот эту.
— Код.
Удаляем конечный index.html из урла.
— Код.
Удаляем конечный index.php из урла, отправляя его на php-обработку.
— Код.
Удаляем из урл двойные/тройные/etc слеши. Описание проблемы здесь.
Для того, чтобы это заработало, надо в секцию http добавить параметр
Секция http {} находится в файле nginx.conf.
Разбираясь в проблеме, стало понятно, что nginx по умолчанию обрабатывает несколько подряд идущих слешей как один. На вход в конфиг отдельно взятого сайта nginx отдавал урл таким, как будто никаких много-слешей там и не было. Происходит это потому, что «мержит» он их уровнем выше, в секции http, в котором и находится та самая настройка merge_slashes. Поэтому и регулярки на вычленение много-слешей не отрабатывали. Выключив эту настройку — всё заработало.
— Код.
Закрываем от внешнего доступа все .htaccess/.htpasswd и им подобные файлы. Опять же, я предпочитаю вообще не показывать, что такие файлы существуют (отдавая 404), нежели подогревать интерес у всяких умников, которые видят, что файл есть, а доступа к нему нет (отдавая 403).
— Код.
Создаём в корне сайта файлы 403.html, 404.html, 50x.html и дизайним их как душе угодно. Эти файлы из браузера открыть не получится (так настроено), но при соответствующих ошибках nginx будет отдавать именно эти страницы.
Ускоряем фронтенд.
— Код.
Подключаем конфиги кеширования и прочего, ускоряющего фронтенд, из комплекта html5boilerplate.
Их я немного подправлял, поэтому выкладываю свою версию: тыц. Просто закиньте эту папку в корень вашей nginx-установки
— Код.
На эту тему написано много, не буду вдаваться в подробности. Смысл в том, что у меня на каждом сайте все изображения, имеющие отношение к оформлению, лежат в папке "i", а все скрипты, я по максимуму переношу в папку "js".
Так вот, чтобы не было блокирующей загрузки файлов фронтенда и, чтобы браузер смог распараллелить загрузку изображений, скриптов и стилей, создаём поддомены i.domain.tld и js.domain.tld, которые являются алиасами соответствующих папок основного домена (вы не забыли в dns прописать cname для всех поддоменов?).
Соответственно, в своих шаблонах пишем что-то вроде такого:
К слову сказать, с css-файлами такого делать не нужно. Их надо подключать классическим способом.
С картинками сложнее, ибо постоянно ручками прописывать в css-файлах урлы вида "i.my-site.ru/design-image.png" геморройно. Но не невозможно.
Лично у меня этим занимается gulp с compass'ом, поэтому над урлами к оформительским изображениям в css'е я не заморачиваюсь.
Ну вот вроде бы и всё.
Кстати, о регулярке ^/(adminka|manager|connectors|connectors-[_A-Z-a-z-0-9]+|_build)/.
Есть замечательная статья Правильный хостинг для MODX Revolution 2, где Василий рассказывает как настроить свой собственный хостинг. В этой статье он делится bash-скриптами для автоустановки/обновления/удаления modx-сайтов для такого вот сервера.
Так вот. Эти скрипты я тоже дописал :)
Теперь у меня при установке:
— папка core выносится за пределы папки www (так что доступ из вне физически невозможен, к тому же в админке в диспетчере и источниках файлов папку core не видно вообще, что тоже накладывает определённую степень безопасности);
— папка manager переименовывается в adminka;
— папка connectors переименовывается в connectors-blablabla-random-key;
— всё это заносится в modx-конфиг и нигде ничего не ломается.
Всё это для пущей безопасности. + для каждого сайта автоматически устанавливается вот этот вот самый nginx-конфиг, который дополнительно настраивать не нужно.
Вот скрипты:
addplace.sh, addsite.sh, remove.sh, update.sh. Не забудьте прописать свой mysql-rool-пароль в каждый из скриптов и сделать их исполняемыми:
Вот с такими вот настройками я вообще не парюсь по поводу seo-strict урлов — ибо всё отточено. Плюс конфиг ускоряющий фронтенд — делает своё дело. Фронтенд я собираю gulp'ом, конфиг к которому я тоже долго обкатывал и оттачивал. Gulp кукожит и склеивает всё, что только может — скрипты, стили, картинки, генерирует critical-css и автоматически инжектит их в шаблоны (такого практически нигде нет).
По итогу, один из моих сайтов имеет 95 баллов по Google PageSpeed (на один меньше, чем у яндекса)). Остальные в районе 90 (±10) баллов.
И раз уж тема изначально зашла про seo, то стоит добавить, что скорость загрузки фронтенда — тоже такой неплохой фактор ранжирования.
Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.
Поехали.
Вопрос канонизации урлов в MODx'е я изучал досконально.
I. MODx'овая система канонических урлов позволяет делать правильные автоматические редиректы на канонические урлы со всех возможных не канонических только в одном случае — это когда у ресурсов-контейнеров нету слеша на конце, а у ресурсов-неконтейнеров не установлено расширение, типа ".html".
Т.е. после всех манипуляций все урлы на сайте будут вида:
/help/5105с начальным слешем, без ".html" и слеша на конце.А действий не так много.
Идём в настройки и меняем следующее:
— Раздел «Дружественные URL»:
1. container_suffix «Суффикс контейнера» — делаем значение пустым;
2. friendly_urls «Использовать дружественные URL» — Да;
3. friendly_urls_strict «Строгий режим дружественных URL» — Да;
Автоматическая генерация, транслитерация, вложенные URL, дублирование во всех контекстах — устанавливаем по вкусу
— Раздел «Сайт»:
4. link_tag_scheme «Схема URL» — abs;
— Раздел «Шлюз»:
5. request_method_strict «Строгий метод запроса» — Да;
Потом идёт в «Сайт» => «Типы содержимого»:
6. HTML text/html — делаем значение пустым.
Вуаля. 6 шагов.
p.s. и удаляйте нахрен тег
<base href="blablabla">, который modx засовывает в стандартный шаблон. Он вообще не нужен.Зато минусов хватает — новички, не понимая основу основ, постоянно об него спотыкаются и задают вопросы в стиле «А почему у меня стили не грузятся?» тем самым забивая и без того забитое информационное пространство.
Да ещё якорные-ссылки из-за этого тега ломаются.
В общем, первым делом убирайте его из стандартного шаблона и в своих шаблонах не прописывайте.
II. Далее в каждом шаблоне внутри тега head пишем:
[[Canonical]]Потом создаём сниппет под названием Canonical и вставляем в него следующее:$resourceId = $modx->resource->get('id');
if (!$resourceId) { return ''; }
/** @var string|array $args */
$args = '';
if (!empty($scriptProperties['args'])) {
$args = $scriptProperties['args'];
if (strpos(ltrim($args), '{') === 0) {
$args = $modx->fromJSON($args);
$args = (is_array($args)) ? $args : '';
foreach ($args as $k => $v) {
if (is_string($k) && !trim($k) && is_string($v) && !trim($v)) {
unset($args[$k]);
}
}
}
}
$canonicalUrl = $modx->makeUrl($resourceId, '', $args, 'full');
return '<link rel="canonical" href="'. $canonicalUrl .'" />';Этот сниппет может принимать один параметр args, в который можно передать строку запроса вида «qwe=asd&zxc=123» либо json-строку, пригодную для преобразования в массив и последующей его передачи в php-функцию http_build_query.Всё, добили seo-strict канониклом.
Но и этого, в своё время мне показалось мало.
III. Конфиг для nginx'а.
Скажу сразу, что для тех, кто использует апач — мне предложить нечего, извините.
Сразу ссылка: gist.github.com/antixrist/cf12d6b49367979ef622
И сразу дисклеймер: в этом конфиге нужно заменить DOMAIN.TLD на ваш домен (в нижнем регистре, разумеется) и заменить your-backend. Кто настраивал — разберётся.
Так вот, давайте я вам расскажу что здесь и как.
Все преобразования урлов происходят с учётом nginx'ового феншуя и правильности с т.з. seo. В этом не сомневайтесь.
— Код.
Редиректим с www. домена на «без www.»
— Код.
Автоматически направляем все поддомены на основной домен. Не забудьте в dns добавить CNAME запись вида:
* CNAME domain.tld.с точкой на конце.— Код.
Прописываем индексные файлы.
— Код, код.
настраиваем обработку php-файлов.
p.s. о регулярке ^/(adminka|manager|connectors|connectors-[_A-Z-a-z-0-9]+|_build)/ будет дальше.
— Код.
Закрываем доступ к папке /core/ из вне. Я настроил так, чтобы при попытке обратиться к какому-либо файлу из этой директории, отдавалась 404, а не 403. Если вас это не устраивает, то вы можете раскомментировать вот эту строчку, закомментировав вот эту.
— Код.
Удаляем конечный index.html из урла.
— Код.
Удаляем конечный index.php из урла, отправляя его на php-обработку.
— Код.
Удаляем из урл двойные/тройные/etc слеши. Описание проблемы здесь.
Для того, чтобы это заработало, надо в секцию http добавить параметр
merge_slashes off;Вот код.Секция http {} находится в файле nginx.conf.
Разбираясь в проблеме, стало понятно, что nginx по умолчанию обрабатывает несколько подряд идущих слешей как один. На вход в конфиг отдельно взятого сайта nginx отдавал урл таким, как будто никаких много-слешей там и не было. Происходит это потому, что «мержит» он их уровнем выше, в секции http, в котором и находится та самая настройка merge_slashes. Поэтому и регулярки на вычленение много-слешей не отрабатывали. Выключив эту настройку — всё заработало.
— Код.
Закрываем от внешнего доступа все .htaccess/.htpasswd и им подобные файлы. Опять же, я предпочитаю вообще не показывать, что такие файлы существуют (отдавая 404), нежели подогревать интерес у всяких умников, которые видят, что файл есть, а доступа к нему нет (отдавая 403).
— Код.
Создаём в корне сайта файлы 403.html, 404.html, 50x.html и дизайним их как душе угодно. Эти файлы из браузера открыть не получится (так настроено), но при соответствующих ошибках nginx будет отдавать именно эти страницы.
Ускоряем фронтенд.
— Код.
Подключаем конфиги кеширования и прочего, ускоряющего фронтенд, из комплекта html5boilerplate.
Их я немного подправлял, поэтому выкладываю свою версию: тыц. Просто закиньте эту папку в корень вашей nginx-установки
— Код.
На эту тему написано много, не буду вдаваться в подробности. Смысл в том, что у меня на каждом сайте все изображения, имеющие отношение к оформлению, лежат в папке "i", а все скрипты, я по максимуму переношу в папку "js".
Так вот, чтобы не было блокирующей загрузки файлов фронтенда и, чтобы браузер смог распараллелить загрузку изображений, скриптов и стилей, создаём поддомены i.domain.tld и js.domain.tld, которые являются алиасами соответствующих папок основного домена (вы не забыли в dns прописать cname для всех поддоменов?).
Соответственно, в своих шаблонах пишем что-то вроде такого:
<script src="http://js.my-site.ru/scripts.js"></script>А файл scripts.js физически у вас должен лежать в /js/scripts.js в корне сайта.К слову сказать, с css-файлами такого делать не нужно. Их надо подключать классическим способом.
С картинками сложнее, ибо постоянно ручками прописывать в css-файлах урлы вида "i.my-site.ru/design-image.png" геморройно. Но не невозможно.
Лично у меня этим занимается gulp с compass'ом, поэтому над урлами к оформительским изображениям в css'е я не заморачиваюсь.
Ну вот вроде бы и всё.
Кстати, о регулярке ^/(adminka|manager|connectors|connectors-[_A-Z-a-z-0-9]+|_build)/.
Есть замечательная статья Правильный хостинг для MODX Revolution 2, где Василий рассказывает как настроить свой собственный хостинг. В этой статье он делится bash-скриптами для автоустановки/обновления/удаления modx-сайтов для такого вот сервера.
Так вот. Эти скрипты я тоже дописал :)
Теперь у меня при установке:
— папка core выносится за пределы папки www (так что доступ из вне физически невозможен, к тому же в админке в диспетчере и источниках файлов папку core не видно вообще, что тоже накладывает определённую степень безопасности);
— папка manager переименовывается в adminka;
— папка connectors переименовывается в connectors-blablabla-random-key;
— всё это заносится в modx-конфиг и нигде ничего не ломается.
Всё это для пущей безопасности. + для каждого сайта автоматически устанавливается вот этот вот самый nginx-конфиг, который дополнительно настраивать не нужно.
Вот скрипты:
addplace.sh, addsite.sh, remove.sh, update.sh. Не забудьте прописать свой mysql-rool-пароль в каждый из скриптов и сделать их исполняемыми:
filename.sh chmod -x (вроде так, поправьте, пожалуйста, если я в команде ошибся).Вот с такими вот настройками я вообще не парюсь по поводу seo-strict урлов — ибо всё отточено. Плюс конфиг ускоряющий фронтенд — делает своё дело. Фронтенд я собираю gulp'ом, конфиг к которому я тоже долго обкатывал и оттачивал. Gulp кукожит и склеивает всё, что только может — скрипты, стили, картинки, генерирует critical-css и автоматически инжектит их в шаблоны (такого практически нигде нет).
По итогу, один из моих сайтов имеет 95 баллов по Google PageSpeed (на один меньше, чем у яндекса)). Остальные в районе 90 (±10) баллов.
И раз уж тема изначально зашла про seo, то стоит добавить, что скорость загрузки фронтенда — тоже такой неплохой фактор ранжирования.
Комментарии: 87
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Было бы интересно взглянуть на галп файл, только начинаю покарять этого быстрого зверька — до этого сидел на гранте.
Но в загашнике лежит относительно недавняя статься на эту тему. Делюсь :)
Вот репозиторий — специально по вашей просьбе выкатил).
Но учтите, я писал только описание установки, но там нету ни слова про структуру каталогов, какие команды вводить, описание всех этих команд, что за чем идёт, каков порядок, описание логики работы critical-css, которого нет вообще практически ни у кого в мире.
+ там в комплекте идут часто используемые мной js-плагины (в том числе, которые я сам писал для себя), у которых стили интегрированы в sass-структуру каталогов.
Без какого-либо описания сами вы там вряд ли разберётесь. А описывать сейчас всё это мне не хочется, извините)
Вот та же история. Грант меня просто вымораживал своей тупостью и тормознутостью. Он мне sass компилировал по 10-13 секунд. Это просто ад какой-то был. Воистину, gulp — это глоток свежего воздуха.
В nginx.conf пишу так:
Что делаю не так?)
В днс только CNAME *.site.ru.
Редирект с www на без www происходит.
Вы думаете, если поисковики от ссылок отказались, то найти одинаковые страницы и склеить их они не способны? Они настолько тупые, что не могут понять что страница со слешем в конце и без слеша — не одна и та же? Или вот вы предлагаете убрать />. Зачем его убирать? На что это влияет? Может быть еще с логотипа убирать ссылки? Насколько мне известно, сейчас поисковики настолько продвинулись, что могут легко читать css-файлы и понимать структуру страницы и оценивать юзабилити.
ПашокПашокА они-то (вот ведь тупенькие!) о своих возможностях и потребностях, наверно, даже и не догадываются! xD
С чего ты это решил? Или не решил?
А это ты с чего решил? Или не решил?
Сперва ты говоришь одно, потом ты говоришь, что такого не говорил. Ок.
Может потому, что они сами об этом пишут? Как прямые рекомендации для вебмастеров? Не? Не слышал?
Но, по-моему, ты нихрена не понял, извини. Либо ничего из написанного мной не читал.
ПашокЧеловек задал чёткий вопрос — как сделать автоматические редиректы. Я дал ответ + несколько других советов и готовых решений. Все довольны.
А нет, не все. Ты зачем-то начал холивары разводить.
Весь твой комментарий — это то самое стереотипное представление о помощи на русскоязычном форуме — вместо того, чтобы дать ответ, люди начинают обсуждать, что он всё делает не так, что каждый сделал бы лучше, да и вообще все вокруг тупые.
Не надо так.
Но, всё же, давай пройдёмся по твоим замечаниям.
И я могу. И кто угодно может. Однако эта твоя фраза всего лишь показатель того, что в теме ты, мягко скажем, не разбираешься. Зато судить берёшься.
И да, и нет. Но к этому мы ещё вернёмся.
Я так полагаю, что речь идёт о теге base? Если нет, то пропускаем этот пункт. А если да…
А ничего, что в этом же абзаце причины и расписаны? Или мне два раза для тебя повторить, чтобы лучше дошло?
Да, и замечу, что причины вполне себе объективные, а не ради какого-то там seo-шаманствва.
Передёргиваете, молодой человек.
Аааа! Ну вот с этого и надо было начинать! Ты слышал звон, а вот где он — уточнить не догадался. Что, впрочем, опять же говорит о том, что опыта у тебя, опять же мягко скажем, маловато. А вот осуждать — так это в первых рядах.
Да, могут читать. Да, могут понимать структуру страницы (это вообще одно из первых, что поисковики научились делать, между прочим). Но оценка юзабилити в глобальном масштабе — это работа алгоритмическая, основанная на статистике, паттерны для которой задаёт армия ассесоров. Можно я не буду объяснять что это значит?
Но вернёмся в дубликатам.
Во-первых, отказались не поисковики, а Яндекс. Для гугла — закупай себе ссылки да не парься.
И в этом плане, Яндекс — красава, гугл — фу-фу-фу (и именно с маленькой буквы). Потому что ссылки — это анахронизм, который делает интернет тупее и отвратнее. Яндекс сделал огромнейший шаг вперёд. Этим он заставляет вебмастеров, редакторов и владельцев сайтов работать над контентом и сервисами, а не заниматься пустоголовой закупкой ссылок и войной бюджетов.
Во-вторых.
Для начала нужно уяснить одну вещь, которую многие почему-то не понимают.
Адрес страницы — это PRIMARY key, если хотите. Уникальный ключ. Именно от урл поисковик всегда отталкивается в своих алгоритмах.
Но вопрос нужно поставить по-другому.
«Вы думаете, если вебмастера фреймворки освоили, то сделать так, чтобы одна страница открывалась по одному урлу они не способны? Они настолько тупые, что не могут понять что страница со слешем в конце и без слеша — не одна и та же?»
Чувствуешь разницу? Если вебмастерам это не нужно, то нахрена это нужно поисковику? В глобальном масштабе ты представляешь какой это объём машино-часов, дата-центров, сжигание электроэнергии и отапливание космоса? И нахрена? Чтобы подчищать за такими вот вебмастерами? Перестраивать свои индексы, пересчитывать показатели, вот это вот всё. Никому на хрен это не сдалось.
Но, опять же, это не говорит о том, что поисковики это не умеют. Просто не надо путать причину и следствие.
Конечно, бывают и исключения. Например, для той же википедии, или хабра, или тысяч, сотен тысяч других авторитетных разнотематических ресурсов, которые действительно создают контент и привносят что-то новое в свою отрасль и в информационное пространство в целом, поисковики, можно сказать, делают для таких сайтов исключения, пренебрегая многими факторами. В seo терминологии это называется «траст» (trust — доверие).
Кстати, это прямым образом относится теме сегодняшнего диалога на странице с вопросом Михаила — modx.pro — это трастовый ресурс в своей отрасли, который действительно создаёт контент, которым люди действительно пользуются и находят на нём ответы на свои вопросы. Вот и вся магия.
А остальные 90% сайтов (миллиарды, миллиарды сайтов) мира — это поток информационного говна, которое копируют друг у друга, переписывают и копируют, которое реально ничего нового не привносит.
А самое забавное — ещё не могут и урлы нормально настроить. Вот ведь какая ирония.
Зато считают, что поисковик вместо них напрячься должен.
А нафига оно им надо?
Как-то помнится, ты вызывался оптимизировать kino-govno. Что из этого получилось? После введения всех этих доработок посещалка подросла? Кстати, интересно было бы сделать выводы по этому проекту, он же на modx и вроде оптимизирован просто суперски, как в названии статья (Super Modx optimized), только забыли несчастный base href убрать от туда почему-то.
Ну или по любому другому коммерческому или можно и развлекательному сайту, но с хорошей статистикой, а не так, что: до моего вмешательство было 1 посещение, в результате моих действий посещалка выросла на 100%.
Субъектив. Опытом всё подкрепляется. Опытом. Которого у тебя, вроде как, нет.
И да, и нет. Да — для тех, кто в этом не разбирается. Нет — для тех, кто экспериментирует и внедряет.
Да, но это относится как раз к покупке ссылок. Мифы эти сеют те, которым выгодна эта самая продажа — сапы, сеопульты и прочие прожигатели космоса.
Откуда это в твоей голове? Всё, что ты перечислил (кроме «зоопарк» — это я вообще хз, что ты имел в виду, не слышал о таком) — это вполне себе официальная терминология, на которой разговаривают, в том числе, сотрудники того же Яндекса.
Мы проделали большой объём работ. Но не достаточный. Потому что… А впрочем не важно. Несколько причин есть.
И да, посещалка не подросла. Но она не скатилась в полное говно после переезда новый домен. Хотя история знает тысячи случаев, когда после смены доменов сайты полностью вылетают из индекса.
Статья называется по другому. Но такое название — это для привлечения внимания.
Потому Василий — не зелёный новичок и знает как им пользоваться и сделать так, чтобы он не мешал. Повторю, если ты этого ещё не понял, к seo этот тег не имеет никакого отношения.
Правда, вместо рекомендаций что-то убирать, я обычно даю ссылку «на почитать», зачем он нужен.
Кэш почистили, юзер зашел по одному имени — base_url закэшировался. Теперь при заходе на другое имя все ссылки выходят на первый домен, ajax запросы становятся кросдоменными, еще и стили могут потеряться.
Нужно или вызывать [[!++base_url]], или делать редирект на какое-то одно имя.
Хотя ты, скорей всего, подразумевал то, что ошибки бывают при использовании конструкции base href="[[++base_url]]" ?
Антон, в любом случае, если всё работает, то, какгрица, не трожь)
Если не уверен, то для понимания общих принципов, почитай вот это.
Я же рекомендую не использовать тег base совсем. А все ссылки, урл на картинки/скрипты/стили начинать со слеша (т.е. делать урлы абсолютными). Тогда никаких ошибок не будет и ссылки (в т.ч. якорные) 100% будут работать правильно.
Сайт на эво был взломан и переделан на рево полностью. На время переделки, да и сейчас старый, очищенный от бяки сайт на эво сунули на домен ру, который быстро догнал позиции.ком в яндексе. Потом сделали на рево на.ком, добавили там сниппет MetaX, и сделали в процессе самопальные ajax- фильтры. Казалось бы — сайт такой же, но он отстает от прошлых позиций, а эво-версия на ру на них держится. Позже, когда сайт новый уже проиндексировался, увидел, что там можно смотреть содержание папок и вставил в htaccess Options -Indexes. В результате несколько сотен страниц выпали из индекса по 404 ошибке (тупых и палящих важное, которые показывали содержание assets и т.п.). суффиксы и префиксы сохранили с эво (/ и .html) остались сохранены с эво, урлы тоже похоже почти везде. MetaX вставлял canonical и этим отрезал пагинацию. Фильтры работают в принципе через пост, так что от них дублей быть не может пока (переделаем может, удобно кнопку назад использовать). Я выпилил из MetaX тег canonical и еще некоторые, написал свой сниппет. Вставляю теперчи ", страница n" в тайтл, дескрипшин и h1 на страницах пагинации больше первой, но вроде эффект от этого всего как мертвому припарки. Сайт сильно отстает от прошлых позиций, а эво-версия на.ру их прочно удерживает… Я ума не приложу с чего это. На днях попробую бороться с дублями плагином Василия. Я просто раньше думал, что если правильно настройки указать — там и так все дубли рубятся.
Скажу 3 вещи:
1. Как вам такое в голову пришло — выкладывать 2 одинаковых сайта не заредиректив их и не склеив?
2. И вы ещё недовольны? Да вам радоваться надо! И пофиг — взломано оно там или нет.
Конечно это, скорей всего, до поры до времени, и рано или поздно один из них с треском из выдачи вылетит (по закону подлости, в выдаче останется тот, у которого позиции хуже).
И конечно, заниматься сейчас вангованием по комментарию и пытаться определить — что же вам там такого надо починить, чтобы всё стало хорошо — я не буду.
3. У вас очень аморфные и безмятежные конкуренты. Что за ниша? Какой регион?)
Обыкновенная житейска необходимость.
В robots.txt был указан Host старый домен.ком, я думал, что этого достаточно. Ну ок, буду читать справку по склейке. Просто сайт на ру вернулся на первую строку в регионе (хотя здесь как раз нам не надо, работают оффлайновые магазины), поэтому мы и боялись редериктить и как-то трогать.ру.
Ну ок, значит сравнивать таким образом эво и рево не имеет смысла и дальнейшее обсуждение проблем сайта здесь — лютый оффтопище.
Спасибо, что толкнули в нужном направлении. А то я лазал по сайтам и искал, что же в первом есть такого, чего нет во втором, который на рево ))
ПашокПашокПашокВоды мало, согласен. Он типа арбайтена, только не такой категоричный. И грамотнее)
ПашокПосле — работал оптимизатором уже в фирме попроще, региональной, но в моём регионе одной из самых известных и узнаваемых. После этой работы к seo отношение поменялось.
А ещё мой друг, после моего курса обучения, устроился работать директологом в агентство, которое занимается исключительно контекстом, которое входит в топ-10 интернет-агентств.
Так что не надо мне тут авторитетом давить.
И вот опять ты за меня решил, что я чего-то там не знаю. Я тебе сам могу столько всего невыдуманного об аффилированности порассказывать — уши завянут.
Так что давай в эту полемику ударяться не будем.
Да и вообще давай закругляться — обсуждение зашло в тупик. С самого начала было понятно, что все и так останутся при своём мнении. Для чего ты начал этот холивар? Хз. От чсв, наверное.
Ааа, так вы про то, что выше!
Так то — не срач! То — лишь беседа трёх господ, не схожих в мненьи :)
Но это ж Яндекс) Он может себе такое позволить)
На каких-нибудь вордпрессах или dle — да, там вроде есть такое. Но вот на modx?
А то, что на отдельно взятом сайте вместо ожидаемой 404 отдаётся 200 ОК, так это проблемы отдельно взятого сайта, а не modx'а в целом.
friendly_urls_strict
request_method_strict
Исходник
Укажи им всем &scheme=`` и тогда должно подхватываться системное значение.
Добавил задачу, но не знаю, когда смогу ей заняться.
+ я сейчас немного подправил сниппет, чтобы можно было сделать следующее:
1. Врубаем pdoParser, который идёт в комплекте с pdoTools, чтобы можно было получать значения глобальных массивов прямо в шаблонах и чанках;
2. И пишем в шаблоне вот такое:
На выходе получим вот такой тег:
Если ни один плейсхолдеров не будет иметь значения, всё-равно в сниппет попадёт валидная json-строка, у которой будет один единственный элемент, у которого не будет ключа. Сниппет такой элемент удалит и передаст в modx'овый построитель урлов пустой массив — и ничего не сломается.
А на выходе будет простой урл, без параметров запроса:
И нагрузка на парсер совершенно не существенная.
Хотя надо будет код его посмотреть — может быть там можно будет как-то получить текущий сформированный урл из сниппета и его подставлять. Либо… Ну тут есть варианты. Руки дойдут — посмотрю, как лучше сделать.
Кстати, отработает быстрее, чем
И писать меньше :)
Сделал все как описано в данной статье, до части с nginx (для него надо просить у active.by доступ, попросил и жду ответа). Ресурс на https.
Сейчас происходят такие вещи. Если что-то выбираешь в меню, то url как будто наращивается.
jinini.com/gallery/painting/gallery/photography/blog/cg-graphics/blog/cg-graphics/quixel-suite
что приводит к тому, что по страницам через меню не погуляешь.
Иногда вижу «На этой странице обнаружена циклическая переадресация» пока прогрузится моя страница.
Можно как то такую проблему исправить?
Меню построено на Wayfinder.
P.s.: прошу прощения за свою некомпетентность. Сайт как хобби, сам я 3Dшник. Поиском пользоваться вроде умею, но он меня не вывел на ответ: (
«Сейчас происходят такие вещи. Если что-то выбираешь в меню, то url как будто наращивается.
jinini.com/gallery/painting/gallery/photography/blog/cg-graphics/blog/cg-graphics/quixel-suite
что приводит к тому, что по страницам через меню не погуляешь.»
решен.
Я просто удалил Wayfinder и поставил pdoMenu. И все заработало как надо. Вопрос решился за пару минут: )
url могут «наращиваться» только если ссылки не от корня сайта, а относительные. Изменить это можно в настройках сайта (если используются сниппеты pdoTools последней версии) или напрямую, указав сниппету
Но вот вопрос с https остался. С кода страницы
/>
Я в силу того, что плохо во всех этих делах разбираюсь, может быть ошибаюсь, но после проделанных операций с этого топика, страницы моего сайта ощутимо быстрее грузятся… Или может совпадение и хостер ускорился в это утро…
Очень жаль, что в интернете есть много негатива в сторону Василия и pdoTools. Я как не разбирающийся, простой пользователь MODx, читал и сомневался, что нужно ставить этот пакет. Из-за этого мое хобби (сайт) постепенно превратилось в кошмар, когда на устаревшие компоненты надо гуглить еще множество кастылей, а иногда отказываться от чего то и придумывать другую структуру сайта… Столько времени потерял ни на что, когда решение было так близко…
modx.pro/howto/5139-super-modx-strict-seo-accelerated-frontend/
modx.pro/howto/5139-super-modx-strict-seo-accelerated-FRONTEND/
modX такие урлы, к сожалению, не канонизирует. Значит надо разруливать nginx'ом. А это надо тестить и обкатывать. А это уже как время появится.
потестить тут ipv6-test.com/validate.php
home/admin/conf/web/ngnix.conf в эту конфиг
Таки ест для каждого сайта в панеле суда надо пихнут.
P.S Испитат не могу 1 раз угробил хостинг :D
ВикторВы не внимательно прочитали. Но выше Андрей вам уже подсказал.
ВикторКасательно тех 6 пунктов, да, почти работает, но, если страница будет ссылаться сама на себя (редкий случай на практике, но возможен), посмотрите что получится тогда. С base href ничего такого не случается.
Если хотите использовать — используйте! В чём проблема?
ВикторВторое — указал на имеющую место быть проблему, при использовании разобранного в статье способа (хоть и редкую, но все же). Еще один минус. Ладно, слушайте, можете просто минусануть и не отвечать. Не очень интересно по два раза разжёвывать смысл своих постов. Всего хорошего.
По поводу минусов — их я вам не ставил. Оставьте беспочвенные обвинения при себе.
Очень внимательно
и дальше:
Добавить нечего. Кроме одного. Чисто для себя погуглите на данном сайте и всех остальных modx-сообществах по фразе "base href" и "убрал базу, включил вложенные url, почему не работает" и сравните количество вопросов.
Вместо "#" вы везде предлагаете писать в 13 раз больше символов, нагружать парсер modx'а там, где этого можно было не делать и бороться с возможными конфликтами во вложенных чанках. Вместо единоразового редактирования шаблона и изменения одной настройки.
Что такого страшного случится в этом случае, чего не случится с «base href»? Вы же понимаете, что без примеров описанная проблема — самая что ни на есть абстрактная? Или не понимаете?
Вы бы хоть привели примеры того, КАК НАДО писать, чтобы проблему обнаружить и как писать НЕ НАДО, чтобы этих проблем не было — было бы ГОРАЗДО больше пользы для (тех самых абстрактных) новичков.
В своей статье я привёл подход с наименьшим сопротивлением, который вызывает наименьшее количество проблем у тех, для кого это пояснение писалось.
Если вы хорошо разбираетесь в данном вопросе — напишите развёрнутый комментарий-пояснение или мини-статью, разложите в ней по полочкам для новичков варианты подходов с тегом base и без него, какие проблемы возникают и как их обходить. И, при случае, я всем буду скидывать ссылку на вашу статью. Даже добавлю ссылку на ваше развёрнутое уточнение в саму статью. Вот ЭТО будет действительно полезно и ценно.
А пока вы только бессмысленно воздух сотрясаете. Мне ничего доказывать не надо — я всё это и так знаю.
С вашей стороны, хотите — используете, хотите — нет. Можете написать пояснение, можете нет. Очевидно же, ну.
И ваши минусы со мной согласны.
ВикторЧто вы пытались выделить тремя цитатами в начале своего сообщения, вообще не ясно. Добавить там действительно нечего. Не нашли больше за что зацепиться? Ок. выделили редкая проблема? И что дальше, если она редкая, значит на нее можно закрыть глаза? Ну, ваше право.
У вас на сайтах крайне часто и много бывает анкорных ссылок? От ссылки «наверх» и, в редких случаях, ссылок 5-7 в навигации, парсер, конечно, колоссально перегрузиться.
Пример вам проблемы надо? А вы не понимаете, что прежде чем давать инструкцию к действию, и писать свою статью, нужно самому все досконально проверить, прежде чем тыкать ей как истиной в последней инстанции. ну? очевидно! Но я скажу что получится —
Дублирование родителя в url, приводящее к 404. Не благодарите.
Инструкцию к действию? Ок — используйте базу и не парьтесь. Если это как то мешает, попробуйте обойтись без нее. Только надо объективно понимать, нужно вам это или нет. Какие от нее могут быть минусы, я, лично, знаю, и могу их привести, в отличие, похоже, от вас, многоуважаемый автор.
И если вернуться к сути моего изначального вопроса, он звучал так — можете ли вы назвать дополнительные минусы использования base href, помимо того, что написали в своей статье? Ответа не было, зато дохрена писанины в защиту своей правоты, хотя информация и не оспаривалась в принципе, было лишь указано на то, что метод имеет и минус.
Короче, в политику не желаете податься? Там ценится такое мастерство — вместо конкретного ответа на заданный вопрос как раз таки сотрясать воздух.
До тех пор, пока всё твоё общение сводится к одним лишь претензиям, конкретно тебе я буду повторять одно: не нравится — уёбывай. Тебе здесь никто ничего не должен.