############################################################################
#### Стандартный .htaccess для проектов студии Клондайк, версия 4.6 ####
############################################################################
RewriteEngine On
# Директива включает редиректы.
RewriteBase /
# Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1
Options +FollowSymLinks
# Разрешает переход по символическим ссылкам.
############################################################################
#### Выбор основного зеркала (с www или без www) ####
############################################################################
# 1. Удалить www
RewriteCond %{ENV:HTTPS} on
#Если включен https
RewriteRule .* - [E=SSL:s]
#То создаем переменную ssl с текстом s
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
# Проверяем, содержит ли домен www в начале URL.
RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
# Перенаправляем удаляем www
############################################################################
#### Перенаправляем протокол http на https ####
############################################################################
RewriteCond %{HTTPS} off
# Проверяем наличие https в URL.
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Перенаправляем протокол на http.
############################################################################
#### Убираем index.php, если он есть в конце URL ####
############################################################################
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
# URL cодержит index.php в конце.
RewriteCond %{REQUEST_METHOD} =GET
# Выявляем GET запрос в URL (не POST).
RewriteRule ^(.*)$ %1/ [R=301,L]
# Удалить index.php из URL.
############################################################################
#### Убираем повторяющиеся слеши (/) в URL ####
############################################################################
RewriteCond %{THE_REQUEST} //
# Проверяем, повторяется ли слеш (//) более двух раз.
RewriteCond %{QUERY_STRING} !http(s|)://
# Убедимся что это не урл в GET
RewriteRule .* /$0 [R=301,L]
# Исключаем все лишние слеши.
############################################################################
#### Убираем слеши в конце URL для статических файлов (содержит точку) ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
# Если файл содержит точку.
RewriteCond %{REQUEST_FILENAME} !-d
# И это не директория.
RewriteCond %{REQUEST_FILENAME} -f
# Является файлом.
RewriteCond %{REQUEST_URI} ^(.+)/$
# И в конце URL есть слеш.
RewriteRule ^(.+)/$ /$1 [R=301,L]
# Исключить слеш.
############################################################################
#### Добавляем слеш(/), если его нет, и это не файл. ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
# Если слеша в конце нет.
RewriteCond %{REQUEST_FILENAME} !-f
# Не является файлом.
RewriteCond %{REQUEST_URI} !\..+$
# В URL нет точки (файл).
RewriteCond %{REQUEST_URI} ^(.+)$
# В URL есть хоть один символы
RewriteRule ^(.*)$ $1/ [L,R=301]
# Добавляем слеш в конце.
############################################################################
#### Компрессия статического контента для гугл спид тест ####
############################################################################
<IfModule mod_deflate.c>
AddType image/svg+xml .svg
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/svg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-opentype "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
<filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$">
Header set Cache-Control "max-age=31536000, public"
</filesmatch>
<filesmatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, private, must-revalidate"
</filesmatch>
<filesmatch "\.(pdf)$">
Header set Cache-Control "max-age=86400, public"
</filesmatch>
<filesmatch "\.(js|otf|ttf|woff|woff2)$">
Header set Cache-Control "max-age=31536000, private"
</filesmatch>
</IfModule>
############################################################################
#### Тут ваша отсебятена ####
############################################################################
Redirect 301 /site/index /
# редирект с папки сайт индекс на слеш
php_value error_reporting 1
# по умолчанию на продакшенах не долно быть репортов они должны быть отключены, ловите репорты на дев версие
RewriteCond %{HTTP_USER_AGENT} ^.*(Chrome/76.0.3809.100).*$ [NC]
# если юзерагент Chrome/76.0.3809.100).* никакой другой, идиотская идея
RewriteRule .* - [F,L]
# соответственно идиотский редирект
RewriteCond %{REQUEST_URI} !^/generate-webp.php$
# Если это не файл
RewriteCond %{REQUEST_URI} !^/sitemap.php$
# И если это не файл
RewriteCond %{REQUEST_URI} !^/php.php$
# И если это не файл
RewriteCond %{REQUEST_URI} !^/allJS\.php?v2$
# И если это не файл
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
# И если это не файл большие английские буквы 3 и более раз, далее пробел плюс любые символы но не точка к пример ADAD DDA.php но не ADld nd.php так же не сработает seting.dbcon.php ( поскольку есть точка и он в низком регистре, не забывай у тебя есть в верху правило которое еще и верхний регистр удаляло, так что правило физически не может работать)
RewriteRule ^ %1 [R,L,NC]
# то редиректим на то что после пробела но до пхп
############################################################################
#### Это ЧПУ движка оно должно быть в самом низу ####
############################################################################
RewriteCond %{REQUEST_FILENAME} !-f
# если это не файл
RewriteCond %{REQUEST_FILENAME} !-d
# если это не директория
RewriteRule . index.php
# То перенаправить на индекс пхп
Редирект с верхнего регистра в нижний (сейчас работает)
Django - фреймворк
битрикс - CMS
если вы про Б24 то вообще CRM
Как можно сравнивать качетво кода в фреймврке и CRM ?
это разные инструменты разные задачи.
собственно у них общего не так то и много.
ЭЭ да это всего лишь сайт на битриксе, ну пусть со своими тараканами но ядро там чистый битрикс.
И это я не для рекламы б24 ни в коем разе там косяк на косяке и косяком погоняет
к примеру он не умеет отправлять почту притом совсем. Мало того и не соберется это делать ( облако умеет)
И да качество кода и тд и тп, но тут мы возвращяемся к вышесказанному hello world на .net
У инструмента есть задачи и цена ввода в эксплуатацию одного рабочего места, и у б24 оно одно из самых низких на рынке.
Однако если у вас обрезанный функционал и все это нагромождение за такие деньги вам не нужны, возможно тут самопись вполне себе оправдана, тем более если проект не будет дальше наращивать функционал.
Тут все зависит от ТЗ.
Что же касается "сайт накроется при потоке" то при плохой сборке он накроется скорее на битриксе, накосячить в нем легче легкого. ( что есть то есть) когда Рыжиков на конференции сказал "Мы ускорили битрикс теперь если сайт работает медленно это точно не вина битрикс" все по улыбались притом сильно ;)
нужно ли брать коробку Б24 для мелкого функционала скорее нет
можно ли собрать на Битриксе бэк вполне себе и он даже будет работать и от этого даже будут кое какие плюсы.
Нужен ли тут битрикс или проще собрать это на фреймворках тут вопрос в ТЗ
Если мазками на всю стену
то:
если небольшой конечный функционал то проще фреймворк
если средний функционал средние нагрузки вполне подойдет битрикс
если действительно высокие нагрузки и глубокий перепил функционала а главное есть ооочень внушительный бюджет то конечно тут самопись тоже имеет место быть, все зависит от ТЗ