Диагностика и решение проблем с доступом к MODX после изменений в .htaccess

В корневой директории домена проекта на MODX расположены две ключевые папки:

  • /public - содержит рабочую версию проекта (лендинг).
  • /ui - хранит файлы вёрстки, доступ к которой должен быть защищён паролем.

После внесения правок в файл .htaccess на проблемном домене возникли следующие ошибки:

  • При переходе по основному домену возвращается ошибка 500 (Internal Server Error).
  • MODX перестал открываться из папки /public.

Предоставленная конфигурация .htaccess выглядит следующим образом:

# Базовая настройка директории сайта
RewriteEngine On

# Все запросы, кроме путей начинающихся с "/design", отправляются в public/
RewriteCond %{REQUEST_URI} !^/(design|ui)/ [NC]
RewriteRule ^(.*)$ /public/$1 [L,QSA]

# Запросы к пути design/* обрабатываются UI-вёрсткой
RewriteCond %{REQUEST_URI} ^/design(/|$ )
RewriteRule ^design/(.*)$ /ui/$1 [L,QSA]

Потенциальные проблемы в конфигурации

Анализ кода позволяет выявить несколько критических моментов, которые могут вызывать ошибку 500 и блокировать доступ к MODX:

  1. Некорректное условие в последнем правиле: В строке RewriteCond %{REQUEST_URI} ^/design(/|$ ) присутствует лишний пробел между $ и закрывающей скобкой ). Синтаксис (/|$ ) является ошибочным и должен быть исправлен на (/|$).
  2. Конфликт правил или зацикливание: Первое правило перенаправляет почти все запросы (кроме начинающихся с /design или /ui) в папку /public. Если внутри самой папки /public также находится файл .htaccess MODX с активными правилами перезаписи, это может привести к конфликту или бесконечному циклу перенаправлений.
  3. Отсутствие обработки корневого запроса: Конфигурация может некорректно обрабатывать запрос к корню домена (например, https://site.com/), если не учтены все возможные сценарии.

Рекомендуемые шаги для решения

Для восстановления работоспособности MODX и устранения ошибки 500 выполните следующие действия:

  1. Исправьте синтаксическую ошибку: Удалите лишний пробел в условии, исправив строку на:
    RewriteCond %{REQUEST_URI} ^/design(/|$)
  2. Проверьте логи сервера: Изучите файлы error.log вашего веб-сервера (Apache или Nginx). Они содержат точное описание ошибки, вызвавшей код 500, что является ключом к диагностике.
  3. Упростите конфигурацию для теста: Временно закомментируйте добавленные правила (поставив символ # в начале каждой строки) и проверьте, открывается ли MODX по основному адресу и из папки /public. Это позволит локализовать проблему.
  4. Убедитесь в корректности путей: Проверьте, что физические пути /public и /ui существуют в корне домена и на них установлены правильные права доступа (обычно 755 для папок и 644 для файлов).
  5. Проверьте внутренний .htaccess: Убедитесь, что файл .htaccess внутри папки /public не содержит правил, которые могут конфликтовать с корневыми директивами.

После внесения исправлений не забудьте очистить кеш браузера и проверить доступность сайта. Если проблема сохраняется, детальная информация из логов сервера будет необходима для дальнейшего анализа.