Задать вопрос
seregazolotaryow64
@seregazolotaryow64
IT Специалист и самоучка

Почему не могу запустить MODX из папки public в домене проекта?

Здравствуйте!

В корневой папке домена проекта на MODX есть две подпапки:
  1. /public — это рабочая версия проекта (лендинга).
  2. /ui — папка с вёрсткой, которая будет защищена паролем.


После внесения изменений в .htaccess в проблемном домене при переходе по основному домену возникла ошибка 500, и MODX не открывается из папки public:

# Базовая настройка директории сайта
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]


Что в конфигурации не так и как решить проблемы с доступом к MODX из браузера? Заранее вам спасибо!
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
an-tar
@an-tar Куратор тега MODX
Full stack web developer
RewriteCond %{REQUEST_URI} !^/(design|ui)/ [NC]
RewriteRule ^(.*)$ /public/$1 [L,QSA]


Навскидку ваши правило не исключает саму папку /public. Когда запрашивается что-то внутри /public, условие всё равно проходит и запрос снова переписывается в /public/..., получаем бесконечный редирект и 500 ошибку.

Кроме того полезно перед глобальным правилом проверять существующие файлы/каталоги, чтобы не переписывать статику.

Попробуйте так:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^design(?:/(.*))?$ ui/$1 [L]

RewriteCond %{REQUEST_URI} !^/public/ [NC]
RewriteCond %{REQUEST_URI} !^/(manager|connectors|assets|ui|design)/ [NC]
RewriteRule ^(.*)$ public/$1 [L,QSA]


Да, внутри /public/ должен быть стандартный .htaccess, config.core.php везде должен учесть эти все пути, ну и AllowOverride=All
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы