Настройка ЧПУ и htaccess для MODX Revolution
<base href="https://modx.ws/"/>
Настройки сайта для формирования ЧПУ
- Заходим в Системные настройки (System settings) и выбираем Friendly URLs в фильтре слева.
- Ставим "Нет" в автоматическую генерацию ЧПУ (Automatic alias - No) и "Да" в использовать ЧПУ (friendly_urls - Yes), "Да" в Использовать ЧПУ в путях псевдонимов (use_alias_path - Yes)
- Для автоматической генерации псевдонимов (Алиасов) из русского (или другого языка) в псевдоним, состоящих из латинских букв, устанавливаем дополнение Translit http://modx.com/extras/package/translit
- Скачиваем из гитхаба последнюю версию .htaccess для MODx Revolution по этой ссылке
- Переименовываем в .htaccess данный файл и заливаем на хостинг в корневую папку. Предварительно нужно внести в этот файл некоторые изменения (см. ниже).
.htaccess для MODX Revolution
Что такое .htaccess - говоря по-простому, то это файл, который содержит набор правил переименования запросов (URL) к вашему сайту.
На что стоит обратить внимание в данном файле:
- Если ваша MODx директория находится в public_html, то правило
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteBase / </IfModule>
оставляем без изменения, если используете поддиректорию subdirectory, то правило будет выглядеть так
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteBase /subdirectory/ </IfModule>
Здесь, думаю, всё понятно.
- Ваш сайт может иметь только одно имя www.sitename.com или sitename.com без www. Так как поисковые системы воспринимают данные два сайта как абсолютно разные. Поэтому необходимо определится с основным доменном и ввести в .htaccess правило для него:
для сайта без www
RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^example-domain-please-change\.com [NC] RewriteRule (.*) http://example-domain-please-change.com/$1 [R=301,L]
для сайта с www
RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^www\.example-domain-please-change\.com [NC] RewriteRule (.*) http://www.example-domain-please-change.com/$1 [R=301,L]
- После того, как вы указали правило для основного домена, желательно указать для Google какой ваш домен является основным. Панель Google для вебмастеров
- Непосредственно само правило перезаписи URL в ЧПУ содержится в следующих строчках:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
- Далее в файле .htaccess взятом с гитхаба (см. ссылку выше) идут дополнительные настройки-правила (для файлов разных типов, сроков изменения и т.д.), особенности использования которых можете узнать по ссылкам в комментариях. Я использую этот файл как есть, без дальнейших изменений.
Использование кеша браузера
Чтобы браузер сохранял уже загружаемые ресурсы (JS, изображения, вебшрифты) нужно в htaccess файле указать время хранения этих файлов. Вставьте в ваш .htaccess следующий код:
<IfModule mod_expires.c> ExpiresActive on # Perhaps better to whitelist expires rules? Perhaps. ExpiresDefault "access plus 1 month" # cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5) ExpiresByType text/cache-manifest "access plus 0 seconds" # your document html ExpiresByType text/html "access plus 0 seconds" # data ExpiresByType text/xml "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType application/json "access plus 0 seconds" # rss feed ExpiresByType application/rss+xml "access plus 1 hour" # favicon (cannot be renamed) ExpiresByType image/x-icon "access plus 1 week" # media: images, video, audio ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType audio/ogg "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/webm "access plus 1 month" # webfonts ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" # css and javascript ExpiresByType text/css "access plus 2 months" ExpiresByType application/javascript "access plus 2 months" ExpiresByType text/javascript "access plus 2 months" </IfModule>
Файл ROBOTS.TXT
Хотя это и не являлось темой этого урока, решил всё же разместить здесь содержимое файла robots.txt для MODx Revolution. Файл содержит правила для поисковых роботов.
Этот файл запрещает (разрешает) индексирование-посещение поисковыми роботами файлов из указаных в нём директорий.
Содержимое моего robots.txt:
User-agent: * Disallow: /manager/ Disallow: /assets/components/ Disallow: /core/ Disallow: /mgr/ Disallow: /connectors/ Disallow: /index.php Disallow: *? Host: modx.ws Sitemap: https://modx.ws/sitemap.xml
Как обычно - не стесняйтесь задавать внизу ваши вопросы. Буду рад любым замечаниям и комментариям.
08-11-2011 SEO htaccess FURL ЧПУ robots.txt Виктор Матушевский
Александр
24.02.2012 09:11Мне показалось, что в файле роботс.тхт вместо ассетс/ надо написать коре/. А папку инсталл/ надо вообще удалить. У меня сложности с этим файликом нарисовались. Содержимое:
User-agent: *
Disallow: /manager/
Disallow: /assets/components/
Disallow: /core/
Disallow: /connectors/
Disallow: /index.php
Disallow: /cgi-bin/
А сегодня узнал, что пауки не смогли зайти на сайт. Я где-то ошибся?
Александр
04.03.2012 18:29ссылка на новый .htaccess не работает
Viktorminator
04.03.2012 18:33Спасибо. Поправил.
Den
15.03.2012 12:07Скачал файл htaccess - есть вопросы
1. в файле отсутствует правило RewriteBase / - это нормально?
Options +FollowSymlinks
RewriteEngine On
2.
было так::::
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^petrov.com\.com [NC]
RewriteRule (.*) http://petrov.com/$1 [R=301,L]
а как в новом фале прописать домен petrov.com?
#
# RewriteCond %{HTTPS} !=on
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# RewriteRule ^ http://corsarrex.com/%1%{REQUEST_URI} [R=301,L]
#
Viktorminator
15.03.2012 19:49RewriteBase / конечно же должен быть.
для petrov.com правило будет
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^petrov\.com [NC]
RewriteRule (.*) http://petrov.com/$1 [R=301,L]
Den
15.03.2012 19:54Спасибо Виктор, надеюсь это единственная ошибка в данном файле =)
Возможно стоит сообщить тому человеку о ней =)
Den
15.03.2012 20:28мдас... увы с htaccess ничего не вышло, как не крутил внутренняя ошибка сервера. Явно не мой уровень, халява не проскочила =)
Роман Колодяжный
24.03.2013 14:12"мдас... увы с htaccess ничего не вышло, как не крутил внутренняя ошибка сервера. Явно не мой уровень, халява не проскочила =)"
закомментируй эту строку - #Options +FollowSymlinks. Уменя на фрихосте только так работает, видимо от настроек сервака зависит..
0 0
09.01.2014 10:47такой строчки нет и быть не может, уважаемый
Алекс
17.04.2012 20:19Спасибо за пример!Успешно настроил зеркала!
Кстати в гугле не обязательно указывать основной домен,если всё правильно настроено в htaccess,то ПС сама определит.
Эдуард
03.05.2012 06:03Добрый день. Пытаюсь переименовать файл ht.access в .htaccess, выскакивает ошибка, что нужно ввести имя файла. Без точки впереди, сохраняет , с точкой - нет. Подскажите, как быть в этом случае?
Заранее благодарен.
Эдуард.
Константин
27.05.2012 17:45Добрый день
для сайта с www / для сайта без www
а как прописывать если нужно что-бы на сайт переходили по адресу petrov.com, и по www.petrov.com?
Viktorminator
27.05.2012 22:53Ничего не прописывайте тогда. Но сайт с www и без них воспринимаются как два разных, а потом гугл видит, что у вас одинаковая информация на двух сайтах и понижает рейтинг.
Алексей
14.08.2012 08:59Эдуард для того чтобы переименовать ht.access в .htaccess. Откройте файл ht.access при помощи программы Notepad++, нажмите сохранить как , далее введите .htaccess и сохраните
Константин
26.08.2012 10:56Доброго времени суток! Подскажите, а можно ли сделать ЧПУ без расширения .html? Чтобы просто было "resurs.ru/adres".
Спасибо заранее!
Viktorminator
26.08.2012 11:02В менеджере System->Content types у html-типа содержимого уберите .html
Алексей
26.08.2012 22:12Если директория MODx находится в Имя_домена/public_html/ - какое правило указывать: это-
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
или второе
Константин
27.08.2012 07:34Виктор, спасибо большое! Отличный ресурс, начал изучать modx (до этого пользовался Drupal'ом), буду пользоваться вашими статьями для изучения!
Viktorminator
27.08.2012 09:54"Это". Просто со слешем. Если в директории, тогда /directoryname/
Михаил
08.09.2012 15:27Странная ошибка. Установил сайт на хостинг. А кроме главной страницы ничего не отображается, отдает 404 ошибку. Создал несколько страниц - толку 0.
Viktor Minator
08.09.2012 19:00Вы, наверное, включили Friendly Url, а ht.access в .htaccess не переименовали...
Alex
14.09.2012 20:31Здравствуйте. Настраивал чпу на последней версии revo, обнаружил еще один пункт не упомянутый в статье. У меня следующим пунктом после "Использовать дружественные URL" идет friendly_urls_strict с вариантами да и нет. Гугл не признается что это, может вы подскажете? Спасибо.
Slava Beico
07.11.2012 14:41Спасибо. Очень помогла ваша статья!
Aleksandr Sergeevich
29.12.2012 20:43Скачал файл htaccess (https://github.com/anselmh/modx-boilerplate/blob/master/ht.access) - все сделал как описано - но выдавало 500 ошибку -- пока не убрал этот параметр.
Options -MultiViews
Вот интерисует - он нужен или нет??
Руслан Сапижук
02.04.2013 10:37У меня такая проблема, включил ЧПУ, настроил все как в инструкции, все работает, но только когда переходит в контейнер документов (site.ru/conteiner/) то при клике на другой пункт меню или снова на контейнер то урл содержит в себе /conteiner/ вот как это выглядит site.ru/conteiner//conteiner/ при повторном клике картина такая site.ru/conteiner//conteiner/ /conteiner/
Кто сталкивался с этой проблемой
Viktor Minator
02.04.2013 10:46эту ошибку делает каждый второй. вверху в синем прямоугольнике написал решение
Boris Nizo
14.05.2013 17:14Добрый вечер, подскажите, в чем может быть дело, включаю чпу, и перестают создаваться ресурсы, т.е нажимаю создать ресурс- а после сохранения когда нажимаю просмотреть- открывается пустая страница...
Viktor Minator
14.05.2013 17:16Ресурс создаётся, но не просматривается, наверное не переименован ht.access -> .htaccess
Boris Nizo
14.05.2013 17:43Нет, все переименовал, но всеравно упорно не хочет создаваться ресурс. могу дать доступ, если можно. сайт пустой, начал с настройки чпу, а тут такой прикол... ни в какую((
Viktor Minator
14.05.2013 18:49viktorminator skype или через вконтакте бросьте доступы - гляну.
Aleksandr D
12.06.2013 01:04Виктор подскажите - может я что-то пропустил, но как боротся со слешем в конце - это же разные получаются страницы. Например
http://ваш_сайт/id — адрес с использованием ID ресурса;
http://ваш_сайт/id/ — адрес с использованием ID ресурса со слешем в конце;
http://ваш_сайт/id.html — адрес с использованием ID ресурса и суффикса;
http://ваш_сай/id.html/ — адрес с использованием ID, суффикса и слеша в конце;
Дмитрий Демченко
18.06.2013 01:45Не правильно указан у Вас базовый урл. По крайне мере пока я не поставил - стили не находились.
Дмитрий Демченко
18.06.2013 01:45Не правильно указан у Вас базовый урл. По крайне мере пока я не поставил - стили не находились.
Евгений Солдатов
28.07.2013 21:11Здравствуйте. Возникла следующая проблема. Я убрал расширение .html, убрал cуффикс контейнера, чтобы мои страницы открывались http://mysite.ru/test
В файле .htaccess прописал
# Remove trailing slash
RewriteRule ^(manager)/*$ – [L] # exclude manager folder
RewriteCond %{REQUEST_URI} (.*)/
RewriteRule ^(.*)/$ http://example.com/$1 [R=301,L]
Чтобы если при вводе http://mysite.ru/test/ был внутренний рерайт на http://mysite.ru/test
Но после этого перестало заходить в админку.
Viktorminator
10.08.2013 01:59Там где не нужен слеш - снимайте чекбокс у ресурса Контейнер, .htaccess верните какой был прежде...
Ulkin Igor
03.08.2013 22:18Помогите стать капельку умнее:
Как настроить Wayfinder, чтобы он к ресурсам в корневой папке добавлял /. Если добавлять в чанк вывода /, слеш выводится везде кроме корневых ресурсов (см. пример).
(хотя возможно я запутался в чанках)
Пример нерабочего вывода (при просмотре из ресурсса "help/clubcard.html" показывается "/help/contact.html" вместо "/contact.html"):
a href="/help/clubcard.html" >Клубная карта
a href="contact.html">Контакты
Выкрутился добавив &fullLink=`true`. Но может есть иное решение?
сайт: http://test.boboloom.com/
хостинг: мастерхост
Базовый урл прописан и .htaccess - приписан как в примере в начале статьи
Заранее спасибо!
Viktorminator
10.08.2013 01:57Системная настройка alias_path - No
Monti
22.09.2013 18:34У вас в начале статьи написано:
base url=
а правильно
base href=
http://www.w3schools.com/tags/tag_base.asp
Viktor Matushevskyi
15.10.2013 18:22Спасибо, исправил
Сергей N
15.10.2013 15:43Доброго времени суток!
Очень помогла ваша статья.
Виктор, исправьте пожалуйста в синем прямоугольнике в начале статьи
должно быть base href=
а у вас base url=
Viktor Matushevskyi
15.10.2013 18:22Спасибо, исправил
Александр Быковский
27.02.2014 15:41У меня любопытный момент.
Если речь идет о конечной странице то УРЛ выглядит так:
http://site.ru/index/6/some-page (где: 6 - это ID родителя).
А если говорить о родителе, то есть о контейнере, то так:
http://site.ru/index/parent/
Собственное вопрос: откуда берется index и ID родителя и как это дельце убрать?
Alex Penskoni
13.03.2014 20:42Тут недавно прочитал такую вещь про robots.txt
Дополнительные директивы следует применять только в записях (секциях) для роботов, поддерживающих данные директивы.
Или по другому:
Не использовать дополнительные директивы в секции для всех роботов.
Т.е. никаких Host: или Crawl-delay: в секции User-agent: *
Вот оригиналы
http://notes.webartsolutions.com/archives/000084
http://robotstxt.org.ru/robotstxterrors#__1.html - Подзаголовок Использование дополнительных директив в секции *
Получается нужно писать host для тех поисковиков, которые это поддерживают?
Viktor Matushevskyi
16.03.2014 01:35Давайте так: 2 основных поисковика - это яндекс и гугл. Смотрим что они пишут по этому поводу http://help.yandex.ru/webmaster/controlling-robot/robots-txt.xml и https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt
Используя прочитаное по ссылкам - пишем для них robots.txt
Валерий Константинов
09.04.2014 14:26Добрый день. Дополнение Translit установил, файл .htaccess последней версии, но URL-адреса все равно не переводятся на латиницу, они автоматически задаются по-русски. В чем может быть проблема? Какие именно строчки в .htaccess отвечают за перевод на латиницу? Или их там нет и за это отвечает Translit? Благодарю за помощь.
Валерий Константинов
14.04.2014 07:27Подскажите, пожалуйста, как решить данную ситуацию?
Viktor Matushevskyi
14.04.2014 22:44Выставить в настройках ключ friendly_alias_translit в значение Russian
Валерий Константинов
17.04.2014 16:13большое спасибо! Только russian с маленькой буквы.
Антон Щёлкин
22.09.2014 14:28Добрый день. Скачал версию modx 2.3.1 и хотел бы настроить ЧПУ, но не могу найти параметр Use Friendly Alias Path. Вместо него есть параметр Использовать вложенные URL. Ключ у этого параметра такой же как и ключ у параметра Use Friendly Alias Path. Подскажите, пожалуйста, это один и тот же параметр, но с разными названиями или эти параметры друг к другу отношения не имеют? Спасибо.
Антон Щёлкин
22.09.2014 15:37Проблема решена.
Алекс Тихонов
29.09.2014 07:38Подскажите как решили вопрос, сейчас тоже столкнулся
Alexander
01.10.2014 15:26Добрый день! Спасибо за Ваш ресурс, очень помогает! Есть проблема, надеюсь, что поможете решить ее. Главная страница по адресу mysite.ru, сделан редирект на www.mysite.ru. Но проблема вот в чем: филиал, например, расположенный в Ростове - адрес выглядит так www.mysite.ru/rostov, когда набираешь mysite.ru/rostov, то редиректа на www.mysite.ru/rostov не происходит и слетают все стили. Какой синтаксис будет для того, чтобы в городах тоже работал редирект на www? из-за этой проблемы и некорректно работает сниппет jot.
Viktor Matushevskyi
01.10.2014 21:52У вас в сайте прописан относительный путь к стилям, а должен быть абсолютный.
То есть сейчас у вас что-то типа scr="../style.css", a должно быть src="/style.css"
Alexander
07.10.2014 13:48Виктор, прописано вот как в head
т.е. из-за этого base href? если я набираю в браузере не www.mysite.ru/rostov, а mysite.ru/rostov, то стили отваливаются..
Alexander
07.10.2014 13:51base href=... в head было прописано.