Іноді складно підібрати назву для поста, але описати проблему, з якою постійно стикаюся, як-то інакше у мене не вийшло. Суть проблеми, що якщо мною призначається основне дзеркало, прописується в .htaccess і після я випадково логін в адмінку по додатковому дзеркала, то я отримую масу артефактів як на Evolution, так і на Revolution. Так як кожен раз я починаю шукати причину, чому так відбувається, а через півгодини чортихаючись згадую про цю проблему, вирішив написати цей пост.
Багато веб-майстри дотримуючись рекомендацій пошукових систем роблять редирект з додаткового дзеркала на основне, наприклад з www поддомена на основний домен. І улюблена нами система Modx, що Evolution, що Revolution, надає нам готове рішення в htaccess. Чи достатня приписати основне дзеркало і расскоментіровать рядки, і вуаля, у нас з'явилося основне дзеркало.
# Rewrite www.domain.com -> domain.com - used with SEO Strict URLs plugin #RewriteCond% {HTTP_HOST}. #RewriteCond% {HTTP_HOST}! ^ Example-domain-please-change \ .com [NC] #RewriteRule (. *) Http://example-domain-please-change.com/$1 [R = 301, L] # # or for the opposite domain.com -> www.domain.com use the following # DO NOT USE BOTH # RewriteCond% {HTTP_HOST}. RewriteCond% {HTTP_HOST}! ^ Www \ .devmarks \ .ru [NC] RewriteRule (. *) Http://www.devmarks.ru/$1 [R = 301, L]Однак, як писалося на початку, якщо при цьому залогінитися в адмінку по додатковому дзеркала, то відразу вилазять артефакти. Про всяк випадок опишу їх. Основні ознаки, що ви потрапили в таку ситуацію для Evo це, як правило, не працюючий візуальний редактор, або не працюють його частини, наприклад, порожнє вікно tinymce при роботі з картинками:
Основні ознаки для Revo це пусте ліве дерево, при цьому порожні як дерево документів, інші вкладки лівого меню.
Знайти рішення цієї проблеми в лоб, з використанням htaccess не вийшло, так як для папки / manager / в даному файлі RewriteEngine вимкнений, а отже впливати через нього ми не можемо. В результаті було прийнято рішення внести зміни в /manager/index.php.
Отже, якщо ми зробили основним дзеркалом піддомен з www, то на початку index.php в папці / manager / прописуємо наступну конструкцію:
if (! preg_match ( '/ ^ www \ ./',$_ SERVER [' HTTP_HOST '])) header (' Location: http: //www.'.$_SERVER [ 'HTTP_HOST']. ($ _SERVER [ 'REQUEST_URI ']? $ _ SERVER [' REQUEST_URI ']:' '));Якщо ж ми зробили основним дзеркалом домен без www, то на початку index.php в папці / manager / прописуємо наступну конструкцію:
if (preg_match ( '/ ^ www \ ./',$_ SERVER [' HTTP_HOST '])) header (' Location: http: //'.str_replace ( 'www.', '', $ _ SERVER [ 'HTTP_HOST'] ). ($ _ SERVER [ 'REQUEST_URI']? $ _ SERVER [ 'REQUEST_URI']: ''));Рішення далеко від ідеалу, до того ж доводиться правити код, а отже стежити, щоб він не затерся при черговому апдейте. Але на даний момент іншого рішення не знайшов. Якщо у когось є рішення краще, напишіть в коментарях.
UPD: Ще один момент, який варто відзначити, що на деяких хостингах 301 редирект на основне дзеркало можна налаштувати в налаштуваннях веб сервера. На них подібних танців з бубном не потрібно.
«Мініфікація HTML Бенчмаркінг хостингу » SERVER [ 'REQUEST_URI ']?SERVER [ 'REQUEST_URI']?