Если в корне сайта создать файл resource0.html (с

Nov 14, 2015

Если в корне сайта создать файл resource0.html (с содержимым, например, OK), а в .htaccess прописать те же самые директивы, но без участия modx (т.е. без вызова index.php):

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^test\.html$ resource0.html [QSA]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ resource0.html?q=$1 [L,QSA]

то никаких артефактов наблюдаться не будет — будет выполнен внутренний редирект на файл resource0.html (в браузере отобразится текст «OK», при этом в строке браузера останется исходный URL site.ru/test.html).

Отсюда делаем 2 вывода:

  1. Внешний (301) редирект выполняет не Apache, а modx (судя по всему, анализирует содержимое полей глобальной переменной $_SERVER — иначе как modx узнает, что на уровне веб-сервера был изменён URI ресурса, который ему втюхали)
  2. Данный вопрос здесь — очень в тему ))

P.S. На 50% проблема решена. Дело за малым — исходники modx…