Правильный файл htaccess для modx

Обновлено: 07.07.2024

В первую очередь нам нужно определиться с тем, ЧТО именно мы хотим получить и КАК это нечто должно работать. Проще говоря, нужно определить цели и поставить задачи.

Давайте договоримся, что наша цель – это создание некоего блога для нескольких авторов с использованием системы управления сайтами MODx CMS. Мы реализуем добавление статей, комментирование, отдельные RSS каналы для новостей и комментариев, поиск по сайту и разбиение информации по категориям (тегам) и авторам. Также сделаем несколько отдельных страниц , где напишем информацию об авторах блога, добавим форму обратной связи и создадим небольшую фотогалерею. В определенной степени это типичные запросы для стандартного сайта, поэтому результаты нашей работы могут быть использованы полностью или частично для разработки других сайтов на MODx.

Что нам потребуется для работы?

Во-вторых, веб-сервер, который поддерживает выполнение PHP скриптов. Кроме того, для установки MODx нам потребуется наличие одной базы данных MySQL. Более подробно о требованиях, выдвигаемых к серверу для оптимальной работы MODx, узнать можно здесь. Если сказать кратко, то это самая обычная конфигурация, которая предлагается большинством хостинговых компаний, поэтому проблем с установкой в "боевых" условиях обычно не возникает.

  • Вы можете скачать готовый инсталляционный пакет Denwer, который сразу установит вам все необходимое для начала работы, или
  • Вы можете скачать отдельно каждую программу: интерпретатор PHP, веб-сервер Apache, сервер баз данных MySQL и набор скриптов phpMyAdmin для удобной работы с базой данных MySQL посредством веб-интерфейса, установить их и настроить для корректной совместной работы.

Лично я бы рекомендовал использовать второй способ, который помогает уяснить некоторые детали работы веб-сервера, а также настроить свой сервер под свои нужды и желания, однако он довольно сложен, поэтому для начинающих веб-разработчиков будет вполне достаточно установки пакета Denwer.

Все вопросы по установке и настройке упомянутых программ я предлагаю задавать в соответствующих им форумах поддержки. Я далеко не эксперт в данных программах… да и, честно говоря, не имею никакого желания вдаваться в эти детали как малозначащие в контексте наших задач.

Теперь я буду считать, что у нас уже имеется настроенный веб-сервер на личном компьютере и/или удаленный доступ к серверу, предоставленный хостинговой компанией. Кроме того, я буду считать, что вы сами смогли разобраться, как создать новую базу данных MySQL и пользователя для этой базы данных (эти данные понадобятся при установке MODx), или получили эту информацию у своей хостинговой компании. У кого еще этого нет – я не виноват. Предлагаю все-таки решить эти вопросы прежде, чем мы перейдем к следующему пункту:

Дизайн для будущего сайта

Поскольку результаты нашей работы не подразумевают коммерческого использования и, к сожалению, прямых доходов в виде живой наличности мне не принесет :), то в данном случае я решил использовать один из бесплатных готовых шаблонов, которые предлагает сайт OSWD.

После недолгих исканий я выбрал шаблон под названием CrystalX. Просто он лично мне понравился и подошел к моим требованиям по содержимому сайта. Я немного подправил этот шаблон и перевел тексты на русский язык, желающие могут посмотреть его либо скачать в архиве ZIP для дальнейшей работы. Как вы видите, шаблон практически полностью удовлетворяет нашим поставленным задачам.

Кодировка: UTF-8!

Ну вот, кое-что у нас уже готово. Теперь давайте вернемся к пакету установки системы управления MODx. Но сначала – небольшое лирическое отступление.

Мое твердое убеждение – все (!) веб-разработчики просто обязаны перейти на использование универсальной кодировки текстов UTF-8. Я не буду описывать преимущества данной кодировки – просто примите как данность, что мы будем работать именно с ней.

Так уж исторически сложилось, что в MODx можно использовать множество разных национальных кодировок, начиная от японской и заканчивая кириллической "windows-1251" a.k.a. "CP1251". По моему мнению – это атавизм, от которого надо жестко избавляться. Что собственно я и проделываю всегда перед установкой новой копии системы управления MODx.

Сейчас разработчики MODx заявляют о полной поддержке системой кодировки UTF-8 и говорят о том, что достаточно всего лишь выбрать эту кодировку при установке системы управления. К сожалению, опыт показывает, что не всегда это срабатывает, и в дальнейшем процессе работы могут оказаться некоторые проблемы с отображением и/или хранением и обработкой текста в базе данных. Однако еще до того, как разработчики включили в установочный пакет кодировку UTF-8, я провел несколько бессонных ночей в поиске решения проблемы кодировок. Решение было найдено и описано мною на форуме. Теперь, даже когда версия системы увеличилась с 0.9.2.1 до 0.9.6.1, я все еще использую свое, возможно, устаревшее решение. И, что важно, оно работает без сбоев.

Кому было интересно, мог ознакомиться с решением выше по ссылке, а кто спешит вперед – может просто сразу скачать слегка измененный установочный пакет. В данном пакете инсталлятор устанавливает кодировку UTF-8 вне зависимости от того, что захотите вы (ну уж извиняйте, се ля ви). Кроме того, я переименовал файлы ht.access в .htaccess (для чего нужны эти файлы – обсудим позже).

Дополнено: На текущий момент все проблемы с кодировками удачно решены, поэтому крайне рекомендуется скачивать последнюю стабильную версию MODx с официального сайта.

Установка системы управления MODx CMS

Установка MODx не сложнее установки иного форума. Детально установка описана нашими сообщниками в Wiki, поэтому особо останавливаться на этом этапе не вижу смысла.

Для начала смело выбирайте установку с установленным флажком "Sample web site" / "Пример веб-сайта", а также со всеми дополнительными опциями. Все равно потом мы все удалим и сделаем иначе :). Но это будет позже.

Если у кого-либо возникнут сложности при установке, предлагаю обратиться на наш форум поддержки.

Но несколько замечаний я таки сделаю.

Файл .htaccess

Как я говорил ранее, в моей редакции установочного пакета изначально были внесены изменения в названии файла .htaccess. Этот файл может регулировать множество параметров работы вашего веб-сервера, но именно в виде .htaccess, а не ht.access. Для меня остается загадкой, почему разработчики изначально не оставили правильный вариант. Догадываться можно, но мне не очень хочется. Просто поверьте, что так будет лучше.

Одним из параметров, которые регулирует данный файл, является параметр обработки URL на сайте. Это т.н. директива "RewriteEngine". По умолчанию она включена и "сообщает" веб-серверу, что он должен подключать свой специальный модуль "ModRewrite" при работе данного сайта. Для желающих узнать больше я предлагаю заняться самостоятельными поисками по данной теме, благо в интернете много материалов, связанных с этим вопросом. Для всех остальных скажу, что данный модуль помогает создавать т.н. "человекопонятные URL", т.е. удобные для людей ссылки.

С параметром (или директивой) "RewriteEngine" напрямую связан параметр "RewriteBase". Изначально рядом с ним установлено значение " /". Это говорит о том, что веб-сервер должен подключать модуль "ModRewrite" в корне директории веб-документов, т.е. в начальной директории, где могут быть обработаны ваши файлы веб-сервером. Например, на Windows этой директорией могут быть находящиеся по адресу "C:\Apache2\htdocs\" или (как у меня) "D:\Server\www\" – папки "htdocs" или "www" соответственно.

Если же Вы переносите сайт в директорию "ниже" начальной, например, так "C:\Apache2\htdocs\modx\" или так "D:\Server\www\modx\", то должны будете изменить в файле .htaccess строчку "RewriteBase /" на "RewriteBase /modx/". Это можно сделать легко, просто открыв данный файл в стандартном Notepad (Блокнот) Windows.

Выше речь шла о файле, находящемся в корневой папке MODx. Однако вы сможете найти еще один файл с таким же названием в папке "/manager/". С этим файлом ничего делать не требуется, он нужен просто для того, чтобы отключить работу модуля "ModRewrite" в системе администрирования MODx.

Файл config.inc.php

Данный файл находится в папке "/manager/includes/". Изначально такого файла не существует, но есть пустой файл, называемый config.inc.php.blank. При возможности переписать этот файл система управления при установке автоматически переименует этот файл в config.inc.php и сохранит в нем свои системные настройки (например, параметры подключения к базе данных).

Обычно так и происходит при установке на Windows. Если же вы устанавливаете MODx на удаленном сервере, который обычно работает под управлением системы Linux/Unix, то вам придется ВРЕМЕННО установить специальные права доступа 0777 для файла config.inc.php.blank (как это сделать – можно узнать у своей хостинговой компании). Точно такие же права нужно будет установить на определенные папки и файлы, которые запросит система управления при установке.

После установки системы управления, если папка "/install/ " не была удалена автоматически, сделайте это сами вручную. Обязательно. И также обязательно поставьте права доступа 0644 к файлуconfig.inc.php. Это делается в целях безопасности, чтобы никто не смог переустановить вам сайт и удалить весь ваш сайт, а также чтобы никто не смог узнать параметры подключения к вашей базе данных, где будет сохраняться вся информация с сайта.

Заключение

На этом первый шаг буду считать законченным. Подведем небольшой итог того, что было сделано:

Вы можете получить дружественные URL-адреса, полностью работающие менее чем за две минуты, выполнив простой четырехэтапный процесс.

1) Рабочий образец .htaccess ¶

MODX предоставляет файл ht.access для редактирования в соответствии с настройками вашего сервера. Он находится в корне сайта MODX. Этот файл будет игнорироваться сервером, пока вы не переименуете его или (лучше) скопируете его в файл с именем .htaccess . Всякий раз, когда браузер запрашивает страницу, сервер проверяет файл с именем .htaccess , который может содержать информацию о том, как должны обрабатываться различные URL-адреса.

Файл .htaccess может находиться в любом месте над установкой MODX, но обычное расположение находится в корне сайта MODX (вместе с файлом ht.access , а также каталогами assets , manager и connectors , как показано на рисунке ниже). Для большинства установок вам не нужно вносить какие-либо изменения в файл, чтобы заставить работать FURL. Есть одно изменение, которое вы должны сделать, но сначала включите FURL, и мы обсудим это изменение в конце этой страницы.


Вот файл ht.access , который поставляется с одной версией MODX (ваша версия может немного отличаться).

Вы также можете поместить файл в /htdocs или /public_html или в то, что использует ваш сервер, если он находится в корневом каталоге MODX или выше.

Имейте в виду, что некоторым хостам нравится писать собственный .htaccess чуть выше уровня сайта, но если ваш .htaccess находится в корне сайта MODX, он должен работать нормально. Если ваш хост поместил файл .htaccess в корень сайта MODX, возможно, вам придется вставить код из файла MODX ht.access ниже кода хоста в этом файле. Обязательно сделайте резервную копию файла хоста первым! Таким образом, вы можете восстановить его, если дела пойдут плохо.

Строка RewriteBase должна заканчиваться на '/' для корневых установок. RewriteBase для установки подкаталога может быть введен как: RewriteBase / subdirectoryName / , хотя обычно это необходимо только для установок localhost . Строка RewriteBase почти всегда должна заканчиваться косой чертой.

2) Настройка MODX Revolution¶

Затем измените настройки в области «Дружественные URL» системных настроек MODX (см. Следующее изображение). В MODX 2.3 щелкните значок шестеренки в правом верхнем углу и выберите «Системные настройки». В более ранних версиях перейдите в Система -> Настройки системы . В поле «Поиск по ключу» в правом верхнем углу сетки введите «friendly» (без кавычек) и нажмите 'Ввод'. Это отобразит все настройки Friendly URL. Главное, что вы хотите, это в нижней части: использовать дружественные URL ( friendly_urls ). Дважды щелкните «Нет» и измените его на «Да».

Если вы не видите все настройки MODX ЧПУ, просто измените раскрывающийся список «Область» (второй список) в фильтре поиска на 'Дружественные URL', как я это сделал.

Вы не найдете friendly_url_prefix и friendly_url_suffix среди настроек на изображении ниже - они устарели, префикс и суффикс теперь определяются Типами контента и container_suffix (для контейнерных ресурсов с типами контента, имеющими mime_type со значением 'text/html'). Параметр «Контейнерный суффикс» по умолчанию теперь «/», что приводит к URL-адресам ресурсов контейнера, а не к типу содержимого контейнера (другими словами, URL-адреса ресурсов, помеченных как контейнеры, будут '/' вместо чего-то вроде '.html'). Если вы хотите, чтобы ваши контейнерные ресурсы отображались как их тип контента (например, '.html'), удалите '/' из этого параметра. Если у вас есть проблемы с пакетами, которые используют суффикс контейнера для ЧПУ (например, Статьи), вернуть эту настройку "/".


Параметр Использовать дружественный путь псевдонима (use_alias_path) позволяет сайту отображать структуры каталогов. Если для этого параметра установлено значение «Нет», все документы на сайте будут отображаться в URL-адресах, как если бы они находились непосредственно вне корня, независимо от путей. Если для этого параметра установлено значение «Да» (по умолчанию), вы увидите полный путь к текущей странице в URL-адресах.

friendly_alias_urls настройка была удалена в MODX 2.1+. Включение friendly_urls подразумевает, что вы используете friendly_alias_urls в 2.1+, и эта настройка больше не нужна.

3) Измените ваш шаблон(ы)¶

Убедитесь, что у вас есть следующий тег в разделе head всех ваших шаблонов. Если у вас есть только один контекст (например, 'web'), вы обычно можете не указывать восклицательный знак для ускорения скорости загрузки страниц:

4) Очистить кеш сайта¶

Самый простой способ воспользоваться ЧПУ - это позволить MODX создавать ссылки, используя теги ссылок, описанные на этой странице: синтаксис ссылок тегов. Создавать ссылки на различные ресурсы легко, если привязать их к тегу ссылки ниже (где '1' - идентификатор ресурса страницы, на которую вы хотите перейти). Это дает дополнительное преимущество, заключающееся в возможности перемещать ресурсы по веб-проекту без необходимости исправлять кучу неработающих ссылок, поскольку MODX просто обновляет ссылки, созданные таким образом, автоматически.

5) Конвертируйте WWW ЧПУ в без-WWW или наоборот¶

Ранее мы упоминали одно изменение, которое вы всегда должны вносить в файл .htaccess , когда у вас работают ЧПУ. Это касается URL, которые начинаются с 'www' (или нет). Пользователь может получить доступ к большинству сайтов с доменным именем или доменным именем, перед которым стоит 'www'»'. Вы всегда должны конвертировать URL в один или другой. Причины сложны, но если вы этого не сделаете, на вашем сайте могут произойти странные вещи. Например, пользователи, которые вошли в систему, могут внезапно потерять этот статус.

он должен в итоге выглядеть так:

Обратите внимание, что мы не раскомментировали первую строку. Здесь указан настоящий комментарий. Раскомментирование заставит сервер обращаться с ним как с кодом, и это может привести к сбою сервера.

Сервер может быть довольно чувствительным к тому, что находится в файле .htaccess . Всегда делайте резервную копию рабочего файла .htaccess перед его изменением. Таким образом, если ваша работа приводит к сбою сервера, вы можете просто скопировать сохраненную версию обратно в .htaccess и начать заново.

Частая ошибка! Для правильного отображения ссылок в head сайта нужно прописать базовый URL примерно вот так:

Настройки сайта для формирования ЧПУ

Заходим в Системные настройки (System settings) и выбираем Friendly URLs в фильтре слева.

Настройка ЧПУ и htaccess для MODX Revolution

Ставим "Нет" в автоматическую генерацию ЧПУ (Automatic alias - No) и "Да" в использовать ЧПУ (friendly_urls - Yes), "Да" в Использовать ЧПУ в путях псевдонимов (use_alias_path - Yes)

Настройки сайта для формирования ЧПУ

Скачиваем из гитхаба последнюю версию .htaccess для MODx Revolution по этой ссылке

Переименовываем в .htaccess данный файл и заливаем на хостинг в корневую папку. Предварительно нужно внести в этот файл некоторые изменения (см. ниже).

.htaccess для MODX Revolution

Что такое .htaccess - говоря по-простому, то это файл, который содержит набор правил переименования запросов (URL) к вашему сайту.

На что стоит обратить внимание в данном файле:

Если ваша MODx директория находится в public_html, то правило.

Оставляем без изменения, если используете поддиректорию subdirectory, то правило будет выглядеть так.

Здесь, думаю, всё понятно.

Для сайта без www

Для сайта c www

Не используйте эти два правила одновременно!

После того, как вы указали правило для основного домена, желательно указать для Google какой ваш домен является основным. Панель Google для вебмастеров

Google для вебмастеров

Непосредственно само правило перезаписи URL в ЧПУ содержится в следующих строчках.

Использование кеша браузера

Чтобы браузер сохранял уже загружаемые ресурсы (JS, изображения, вебшрифты) нужно в htaccess файле указать время хранения этих файлов. Вставьте в ваш .htaccess следующий код:

Файл ROBOTS.TXT

Хотя это и не являлось темой этого урока, решил всё же разместить здесь содержимое файла robots.txt для MODx Revolution. Файл содержит правила для поисковых роботов.

Этот файл запрещает (разрешает) индексирование-посещение поисковыми роботами файлов из указаных в нём директорий.

Ввод названия сайта производится в окне "Настройка системы". Чтобы в неё зайти необходимо нажать на значок "Шестерёнки" и выбрать в открывшемся меню пункт "Настройка системы".

Настройки системы MODX Revolution

Так как MODX содержит большое количество настроек, то рекомендую пользоваться фильтрами для отбора нужных параметров (например, параметр "Название сайта" находится в разделе "Сайт"). После выбора фильтра "Сайт" переходим к изменению параметра "Название сайта", для этого необходимо в соответствующем поле ввести нужное название (например: "Мой блог").

Параметр MODX Revolution для изменения названия сайта

Примечание: Сохранять или подтверждать изменения параметров системы в MODX Revolution не требуется.

Настройка ЧПУ для сайта

Но перед тем как переходить к настройке ЧПУ, давайте разберёмся что означает этот термин.

Понятие ЧПУ

ЧПУ – это понятный для человека веб-адрес страницы сайта, т.е. тот который Вы видите в адресной строке браузера.

Этот адрес содержит страницу (ресурс), которая имеет идентификатор 2 во внутренней структуре CMS MODX Revolution. Такая запись не является понятным пользователю, да и поисковым машинам Google и Yandex она не очень понятна, что в итоге может привести к более низким позициям при выдаче сайта в этих системах.

Совсем другое дело, когда адрес веб-страницы выводится с помощью ЧПУ, такой адрес отражает понятную для человека иерархию данных на сервере, например:
http://mysite.ru/articles/bootstrap-3/labels-and-icons
Данный адрес отображает страницу "labels-and-icons", которая находится в контейнере "bootstrap-3", а он, в свою очередь, содержится в контейнере "articles".

Настройка файла .htaccess для ЧПУ

Настройка веб-сервера для работы с ЧПУ осуществляется посредством конфигурационного файла .htaccess :

Настройка параметров системы MODX Revolution для ЧПУ

Для настройки ЧПУ в CMS MODX Revolution необходимо перейти в раздел "Настройка системы" и в поле "Фильтр по разделу. " выбрать из списка пункт "Дружественные URL".

Установка фильтра Дружественные URL на странице Параметры системы

В открывшейся таблице необходимо изменить значения следующих параметров:

В итоге для настройки ЧПУ в CMS MODX Revolution мы выполнили следующие действия:

Читайте также: