О сайтах и не о сайтах

Теперь и в tg!

tg

Переехал с твиттера на t.me/tulvit_blog, если что.

Корневой .htaccess Drupal'а и drush

На правах "хозяйке на заметку", уже с год хотел написать, но что-то только сейчас руки дошли. Может кому и пригодится.

Часто в корневой .htaccess файл Друпала вносятся те или иные изменения. Точнее даже не часто, а практически всегда - ну, как минимум определить основное зеркало, с www или без, и поставить 301-ый редирект с одного на другое.

Проблема в том, что этот корневой .htaccess - часть ядра (как иначе-то?), а значит обновляется с той же регулярностью, что и само ядро. А обновляется, значит перезаписывается.

Т. е. установили Друпал, внесли изменения в .htaccess, через неделю выходит обновление Друпала, обновляемся, .htaccess перезаписывается на новый, поэтому снова его правим, через пару недель выходит новое обновление...

Не такая уж и проблема, если мы обновляем Друпал руками - можно глянуть, были ли какие изменения в нем в ченджлоге, и если нет, то просто не перезаписываем. Хотя тоже муторно, так-то.

Но вот что делать, если для обновления используем drush? Он всегда перезаписывает все файлы ядра, включая .htaccess. Бегло погуглил, у разработчиков реквестировали возможность опционально скипать обновление выбранных файлов, но воз и ныне там (скорее всего - принципиально).

Собственно, простое решение проблемы. Корневой .htaccess не трогаем, а все что нам нужно - добавляем в файл виртуально хоста (у нас же VPS или вообще свой сервак, а не шаред). Для редиректа с www на без, например:

<VirtualHost *:80>
...
# Rewrite Rules
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
</VirtualHost>

C robots.txt та же самая проблема, к слову. А вот как ее решить - уже без понятия. Только разве что с помощью баш скриптов (копируем старый роботс, обновляем Друпал, заменяем новый роботс на старый).

Комментарии

"Только разве что с помощью баш скриптов (копируем старый роботс, обновляем Друпал, заменяем новый роботс на старый)."

Такой изврат уже ставит под вопрос смысл возни со всякими цмс. Вроде поначалу круто, все готовое из коробки, а потом начинается геморрой как надо что-то по мелочи доработать. 

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

А вообще, у меня сейчас половина всего на самописе с нуля, а половина на фреймворках. Сказать, что лучше - не могу. И там и там и свои плюсы и свои минусы. Из двух зол, как всегда.

ИМХО, если что-то сложнее бложика или банального статейника - цмс себе дороже. Лучше уж фреймворк из которого можно без проблем выдрать готовые модули и использовать как хочется. Если фреймворк диктует свою идеологию, а шаг влево - расстрел, то ну его в сад. В свое время я так использовал первый zf, второй уже не прижился. Пытался ковырять symfony, но пока не пошло. Конечно все это мое имхо и криворукость наверное. Настоящие тру-разработчики не изобретают кривые велосипеды, а используют правильные готовые решения. Но мне так удобнее оказалось, тем более под заказ я ничего не делал уже очень давно, все для себя. 

Согласился бы, но не соглашусь :) Как минимум в контексте Друпала. Джумла, ВордПресс - я их "потыкал", да быстро слез, слишком много архитектурных ограничений как раз.

А Друпал в этом плане занимает пограничное положение между низкоуровневыми фреймворками и всякими "движками одной задачи". За что и любим. Много свободы, архитектура максимально абстрактная (в текущей 8-ой версии нет даже главной страницы как таковой - собираешь ее из суть SQL запросов через интерфейсики). Вообще, это одна из концепций с самого начала, никакой предопределенной задачности (блоговый движок, статейник, магазин), а "С Drupal ты можешь сделать сайт такой-же-как-этот."

На память даже и не вспомнить, чтобы меня Друпал в чем-то где-то сильно ограничивал. Т. е. в голове какая-то идея - и практически всегда ее можно было вписать в Друпал без сильных уступок. WannabeArtists вот планирую делать именно на Друпале, идей-задач по сайту море, в голове так прикидывал, никаких особых проблем возникнуть не должно.

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

А до низкоуровневых фреймворков (Симфони хотя бы) руки пока так и не дошли, к сожалению (как и просто к библиотекам классов, тот же Pear для пхп). Но рано или поздно дойдут.

Сейчас в вики глянул, там тоже пишут, что "нечто среднее",

Drupal, a free and open source content-management framework

A content management framework (CMF) is a system that facilitates the use of reusable components or customized software for managing Web content. It shares aspects of a Web application framework and a content management system (CMS).