Перейти к содержанию
  • OpenCart Wiki

    Статьи про OpenCart и прочее
    content bot

    Canonical

    От content bot, в Общее,

    Канонические адреса (canonical) и их важность
    Canonical – это атрибут метатега link, который используется для указания основной страницы сайта. Такие страницы называются каноническими и помечаются атрибутом canonical. Это помогает поисковым роботам индексировать только один контент, который расположен на странице с указанным адресом.
    Появление дублей на сайте может быть вызвано различными причинами, такими как работа CMS с разными типами адресов, возврат одинакового значения при использовании разных протоколов и субдоменов, а также присвоение нескольких адресов одной странице из-за одинакового контента в разных разделах.
    Использование атрибута rel="canonical" важно для избежания индексации дублирующего контента на разных страницах сайта. Это помогает избежать ухудшения рейтинга сайта в поисковой выдаче из-за дублей.
    Для организации расположения канонических адресов в коде статей и предотвращения появления дублей необходимо применять атрибут canonical. Это упрощает процесс SEO-оптимизации и позволяет быстрее индексировать нужный контент, исключая дубли из поиска. Установка данного метатега делает процесс оптимизации более эффективным и быстрым.
    Проверка наличия и использование метатега с атрибутом canonical для оптимизации сайта
    1. Открытие и анализ кода страницы:
    - Открываем код веб-страницы, ищем нужный метатег с указанным атрибутом canonical.
    2. Использование специальных расширений или плагинов:
    - Устанавливаем в браузер специальное расширение, дополнение или плагин для просмотра параметров веб-сайтов.
    - Расширение уведомит пользователя о наличии или отсутствии метатега canonical на посещаемой странице.
    3. Поиск дублей с помощью поисковых систем:
    - Заходим на страницу расширенного поиска системы "Яндекс".
    - Передаем поисковой системе часть содержимого страницы или сетевой адрес сайта для проверки наличия дублированного контента.
    - "Яндекс" выведет адреса страниц с дублированным контентом или предложит варианты по запросу при отсутствии дублей.
    4. Использование специальных операторов поиска:
    - Для проверки наличия метатега canonical можно воспользоваться специальными операторами поиска, например, в Google.
    - В строку поиска вводим оператор site:домен проверяемого сайта "ключевое слово", чтобы найти дублированный контент.
    5. Использование сервисов проверки уникальности контента:
    - Для поиска дублированного контента можно воспользоваться специализированными сервисами проверки уникальности контента.
    - Сервисы помогут обнаружить полностью или частично дублированный контент и указать процент совпадений.
    6. Важность корректной настройки метатега canonical:
    - Правильно настроенный метатег с атрибутом canonical повысит эффективность оптимизации и продвижения сайта в интернете.
    - Canonical помогает поисковым системам понять основную страницу с похожим контентом, избежать проблем с дублированным контентом и улучшить позиции сайта в результатах поиска.
     
    Внимательная проверка наличия и правильного использования метатега canonical поможет улучшить SEO-показатели вашего сайта.

    content bot

    MVC - Model-View-Controller

    От content bot, в Общее,

    Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо.
    MVC
    Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя своё состояние. Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели. Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений.  
    Основная цель применения этой концепции состоит в отделении бизнес-логики (модели) от её визуализации (представления, вида). За счёт такого разделения повышается возможность повторного использования кода. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения.
    В частности, выполняются следующие задачи:
    К одной модели можно присоединить несколько видов, при этом не затрагивая реализацию модели. Например, некоторые данные могут быть одновременно представлены в виде электронной таблицы, гистограммы и круговой диаграммы; Не затрагивая реализацию видов, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных) — для этого достаточно использовать другой контроллер; Ряд разработчиков специализируется только в одной из областей: либо разрабатывают графический интерфейс, либо разрабатывают бизнес-логику. Поэтому возможно добиться того, что программисты, занимающиеся разработкой бизнес-логики (модели), вообще не будут осведомлены о том, какое представление будет использоваться.  
    Концепция MVC позволяет разделить модель, представление и контроллер на три отдельных компонента:
    Модель Модель предоставляет данные и методы работы с ними: запросы в базу данных, проверка на корректность. Модель не зависит от представления (не знает как данные визуализировать) и контроллера (не имеет точек взаимодействия с пользователем), просто предоставляя доступ к данным и управлению ими. Модель строится таким образом, чтобы отвечать на запросы, изменяя своё состояние, при этом может быть встроено уведомление «наблюдателей». Модель, за счёт независимости от визуального представления, может иметь несколько различных представлений для одной «модели» Представление Представление отвечает за получение необходимых данных из модели и отправляет их пользователю. Представление не обрабатывает введённые данные пользователя. Контроллер Контроллер обеспечивает «связь» между пользователем и системой. Контролирует и направляет данные от пользователя к системе и наоборот. Использует модель и представление для реализации необходимого действия.  
    Источник: wikipedia .

    content bot

    Bootstrap

    От content bot, в Фреймворки,

    Bootstrap (также известен как Twitter Bootstrap) — свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML и CSS шаблоны оформления для типографики, веб форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейса, включая JavaScript расширения.
    Bootstrap использует современные наработки в области CSS и HTML, поэтому необходимо быть внимательным при поддержке старых браузеров.
     
    Основные инструменты Bootstrap:
    Сетки — заранее заданные размеры колонок, которые можно сразу использовать, например, ширина колонки 140 px относится к классу .span2 (.col-md-2 в третьей версии фреймворка), который можно использовать в CSS-описании документа. Шаблоны — фиксированный или резиновый шаблон документа. Типографика — описания шрифтов, определение некоторых классов для шрифтов, таких как код, цитаты и т. п. Медиа — предоставляет некоторое управление изображениями и видео. Таблицы — средства оформления таблиц, вплоть до добавления функциональности сортировки. Формы — классы для оформления форм и некоторых событий, происходящих с ними. Навигация — классы оформления для панелей, вкладок, перехода по страницам, меню и панели инструментов. Алерты — оформление диалоговых окон, подсказок и всплывающих окон.  
    5 мая 2021 года был официально выпущен Bootstrap 5
    Основные изменения включают:
    Новый компонент меню offcanvas. Удаление зависимости от jQuery в пользу ванильного JavaScript. Переписывание сетки для поддержки адаптивных желобов и столбцов, размещенных за пределами строк. Перенос документации с Jekyll на Hugo. Прекращение поддержки Internet Explorer[19]. Перенос инфраструктуры тестирования с QUnit на Jasmine. Добавление собственного набора иконок SVG. Добавление пользовательских свойств CSS. Улучшенный API. Усовершенствованная система сетки. Улучшенная настройка документов. Обновленные формы. RTL-поддержка  
    Источник: wikipedia .
     

    content bot

    ЧПУ - URL

    От content bot, в Общее,

    Человекопонятный URL - ЧПУ
    Человекопонятный URL (сокр. ЧПУ, также семантический URL, англ. friendly URL) — URL-путь, состоящий из понятных слов, вместо идентификаторов, и отражающий файловую структуру сайта. Например, вместо /c14/3/97/ или /index.php?cat=10&subcat=2&id=41 используется /apple/smartphone/iphone-14-pro/.
    Человекопонятные пути улучшают удобство использования, кроме того, позволяют по названию ссылки заранее предполагать содержимое страницы по ней и представлять структуру сайта. Технически URL может содержать только буквы латинского алфавита и некоторые символы. Все другие символы, включая русские буквы, кодируются (percent‐encoding) и могут выглядеть вроде %D0%9B%D1%83%D0%BA.
    Поэтому обычно в адресах используют латиницу, чтобы избегать осложнений для пользователей
     
    «Понятные человеку URL» предполагают сокращение адресов страниц до максимально лаконичных и понятных. Они создают подобие естественной для человека логической структуры данных на сервере, представляя её в виде иерархичной (древовидной) структуры, аналогично файловой системе. Такие адреса удобней прочитать, понять и воспроизвести. К тому же это помогает ориентироваться в логической структуре сайта, лишь взглянув на вложенность каталогов.
    Не обязательно переходить на страницу, чтобы узнать, что на ней размещено. В некоторых случаях для того, чтобы пройти на родительские каталоги, необходимо всего лишь стереть до нужного места адрес, а чтобы перейти на главную страницу, стирается всё, кроме доменного имени.
    Такие адреса демонстрируются поисковыми системами прямо в поисковой выдаче, в том числе по этим адресам происходит поиск ключевых слов. ЧПУ используют в методах поисковой оптимизации (SEO).
     
    Источник: wikipedia .

    content bot

    Доме́нное имя

    От content bot, в Общее,

    Доме́нное имя — символьное имя, служащее для идентификации областей, которые являются единицами административной автономии в сети Интернет, в составе вышестоящей по иерархии такой области. Каждая из таких областей называется доме́ном.
    Общее пространство имён Интернета функционирует благодаря DNS — системе доменных имён.
     
    Доменные имена дают возможность адресации интернет-узлов и расположенным на них сетевым ресурсам (веб-сайтам, серверам электронной почты, другим службам) быть представленными в удобной для человека форме.
     
    Источник: wikipedia .

    content bot

    .htaccess

    От content bot, в Apache,

    Стандартные конфигурации HTTP-сервера Apache
    .htaccess — это конфигурационный файл веб-сервера Apache, позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера.
    Директивы файла .htaccess действуют для каталога, в котором размещён такой файл, и для всех его подкаталогов. Если вы желаете с помощью .htaccess изменить настройки для сайта в целом, его следует размещать в корневом каталоге сайта ~/ваш_домен/docs.
    Будьте внимательны при редактировании файла .htaccess! так как при сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов рекомендуем использовать не  специальные текстовые редакторы, к примеру Notepad++.
    # ###################################################################### # # CROSS-ORIGIN # # ###################################################################### # ---------------------------------------------------------------------- # | Cross-origin requests | # ---------------------------------------------------------------------- # Allow cross-origin requests. # # https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS # http://enable-cors.org/ # http://www.w3.org/TR/cors/ # <IfModule mod_headers.c> # Header set Access-Control-Allow-Origin "*" # </IfModule> # ---------------------------------------------------------------------- # | Cross-origin images | # ---------------------------------------------------------------------- # Send the CORS header for images when browsers request it. # # https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image # https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html <IfModule mod_setenvif.c> <IfModule mod_headers.c> <FilesMatch "\.(bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$"> SetEnvIf Origin ":" IS_CORS Header set Access-Control-Allow-Origin "*" env=IS_CORS </FilesMatch> </IfModule> </IfModule> # ---------------------------------------------------------------------- # | Cross-origin web fonts | # ---------------------------------------------------------------------- # Allow cross-origin access to web fonts. <IfModule mod_headers.c> <FilesMatch "\.(eot|otf|tt[cf]|woff2?)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch> </IfModule> # ---------------------------------------------------------------------- # | Cross-origin resource timing | # ---------------------------------------------------------------------- # Allow cross-origin access to the timing information for all resources. # # If a resource isn't served with a `Timing-Allow-Origin` header that # would allow its timing information to be shared with the document, # some of the attributes of the `PerformanceResourceTiming` object will # be set to zero. # # http://www.w3.org/TR/resource-timing/ # http://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/ # <IfModule mod_headers.c> # Header set Timing-Allow-Origin: "*" # </IfModule> # ###################################################################### # # ERRORS # # ###################################################################### # ---------------------------------------------------------------------- # | Custom error messages/pages | # ---------------------------------------------------------------------- # Customize what Apache returns to the client in case of an error. # https://httpd.apache.org/docs/current/mod/core.html#errordocument ErrorDocument 404 /404.html # ---------------------------------------------------------------------- # | Error prevention | # ---------------------------------------------------------------------- # Disable the pattern matching based on filenames. # # This setting prevents Apache from returning a 404 error as the result # of a rewrite when the directory with the same name does not exist. # # https://httpd.apache.org/docs/current/content-negotiation.html#multiviews Options -MultiViews # ###################################################################### # # INTERNET EXPLORER # # ###################################################################### # ---------------------------------------------------------------------- # | Document modes | # ---------------------------------------------------------------------- # Force Internet Explorer 8/9/10 to render pages in the highest mode # available in the various cases when it may not. # # https://hsivonen.fi/doctype/#ie8 # # (!) Starting with Internet Explorer 11, document modes are deprecated. # If your business still relies on older web apps and services that were # designed for older versions of Internet Explorer, you might want to # consider enabling `Enterprise Mode` throughout your company. # # http://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode # http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx <IfModule mod_headers.c> Header set X-UA-Compatible "IE=edge" # `mod_headers` cannot match based on the content-type, however, # the `X-UA-Compatible` response header should be send only for # HTML documents and not for the other resources. <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> Header unset X-UA-Compatible </FilesMatch> </IfModule> # ---------------------------------------------------------------------- # | Iframes cookies | # ---------------------------------------------------------------------- # Allow cookies to be set from iframes in Internet Explorer. # # http://msdn.microsoft.com/en-us/library/ms537343.aspx # http://www.w3.org/TR/2000/CR-P3P-20001215/ # <IfModule mod_headers.c> # Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"" # </IfModule> # ###################################################################### # # MEDIA TYPES AND CHARACTER ENCODINGS # # ###################################################################### # ---------------------------------------------------------------------- # | Media types | # ---------------------------------------------------------------------- # Serve resources with the proper media types (f.k.a. MIME types). # # https://www.iana.org/assignments/media-types/media-types.xhtml # https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype <IfModule mod_mime.c> # Data interchange AddType application/json json map topojson AddType application/ld+json jsonld AddType application/vnd.geo+json geojson AddType application/xml atom rdf rss xml # JavaScript # Normalize to standard type. # https://tools.ietf.org/html/rfc4329#section-7.2 AddType application/javascript js # Manifest files # If you are providing a web application manifest file (see # the specification: https://w3c.github.io/manifest/), it is # recommended that you serve it with the `application/manifest+json` # media type. # # Because the web application manifest file doesn't have its # own unique file extension, you can set its media type either # by matching: # # 1) the exact location of the file (this can be done using a # directive such as `<Location>`, but it will NOT work in # the `.htaccess` file, so you will have to do it in the main # server configuration file or inside of a `<VirtualHost>` # container) # # e.g.: # # <Location "/.well-known/manifest.json"> # AddType application/manifest+json json # </Location> # # 2) the filename (this can be problematic as you will need to # ensure that you don't have any other file with the same name # as the one you gave to your web application manifest file) # # e.g.: # # <Files "manifest.json"> # AddType application/manifest+json json # </Files> AddType application/x-web-app-manifest+json webapp AddType text/cache-manifest appcache manifest # Media files AddType audio/mp4 f4a f4b m4a AddType audio/ogg oga ogg opus AddType image/bmp bmp AddType image/webp webp AddType video/mp4 f4v f4p m4v mp4 AddType video/ogg ogv AddType video/webm webm AddType video/x-flv flv AddType image/svg+xml svg svgz # Serving `.ico` image files with a different media type # prevents Internet Explorer from displaying then as images: # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee AddType image/x-icon cur ico # Web fonts AddType application/font-woff woff AddType application/font-woff2 woff2 AddType application/vnd.ms-fontobject eot # Browsers usually ignore the font media types and simply sniff # the bytes to figure out the font type. # https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern'>https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern # # However, Blink and WebKit based browsers will show a warning # in the console if the following font types are served with any # other media types. AddType application/x-font-ttf ttc ttf AddType font/opentype otf # Other AddType application/octet-stream safariextz AddType application/x-bb-appworld bbaw AddType application/x-chrome-extension crx AddType application/x-opera-extension oex AddType application/x-xpinstall xpi AddType text/vcard vcard vcf AddType text/vnd.rim.location.xloc xloc AddType text/vtt vtt AddType text/x-component htc </IfModule> # ---------------------------------------------------------------------- # | Character encodings | # ---------------------------------------------------------------------- # Serve all resources labeled as `text/html` or `text/plain` # with the media type `charset` parameter set to `UTF-8`. # # https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset AddDefaultCharset utf-8 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Serve the following file types with the media type `charset` # parameter set to `UTF-8`. # # https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset <IfModule mod_mime.c> AddCharset utf-8 .atom \ .bbaw \ .css \ .geojson \ .js \ .json \ .jsonld \ .rdf \ .rss \ .topojson \ .vtt \ .webapp \ .xloc \ .xml </IfModule> # ###################################################################### # # REWRITES # # ###################################################################### # ---------------------------------------------------------------------- # | Rewrite engine | # ---------------------------------------------------------------------- # (1) Turn on the rewrite engine (this is necessary in order for # the `RewriteRule` directives to work). # # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine # # (2) Enable the `FollowSymLinks` option if it isn't already. # # https://httpd.apache.org/docs/current/mod/core.html#options # # (3) If your web host doesn't allow the `FollowSymlinks` option, # you need to comment it out or remove it, and then uncomment # the `Options +SymLinksIfOwnerMatch` line (4), but be aware # of the performance impact. # # https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks # # (4) Some cloud hosting services will require you set `RewriteBase`. # # http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase # # (5) Depending on how your server is set up, you may also need to # use the `RewriteOptions` directive to enable some options for # the rewrite engine. # # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions <IfModule mod_rewrite.c> # (1) RewriteEngine On # (2) Options +FollowSymlinks # (3) # Options +SymLinksIfOwnerMatch # (4) # RewriteBase / # (5) # RewriteOptions <options> </IfModule> # ---------------------------------------------------------------------- # | Forcing `https://` | # ---------------------------------------------------------------------- # Redirect from the `http://` to the `https://` version of the URL. # https://wiki.apache.org/httpd/RewriteHTTPToHTTPS # <IfModule mod_rewrite.c> # RewriteEngine On # RewriteCond %{HTTPS} !=on # RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] # </IfModule> # ---------------------------------------------------------------------- # | Suppressing / Forcing the `www.` at the beginning of URLs | # ---------------------------------------------------------------------- # The same content should never be available under two different # URLs, especially not with and without `www.` at the beginning. # This can cause SEO problems (duplicate content), and therefore, # you should choose one of the alternatives and redirect the other # one. # # By default `Option 1` (no `www.`) is activated. # http://no-www.org/faq.php?q=class_b # # If you would prefer to use `Option 2`, just comment out all the # lines from `Option 1` and uncomment the ones from `Option 2`. # # (!) NEVER USE BOTH RULES AT THE SAME TIME! # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Option 1: rewrite www.example.com → example.com <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Option 2: rewrite example.com → www.example.com # # Be aware that the following might not be a good idea if you use "real" # subdomains for certain parts of your website. # <IfModule mod_rewrite.c> # RewriteEngine On # RewriteCond %{HTTPS} !=on # RewriteCond %{HTTP_HOST} !^www\. [NC] # RewriteCond %{SERVER_ADDR} !=127.0.0.1 # RewriteCond %{SERVER_ADDR} !=::1 # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # </IfModule> # ###################################################################### # # SECURITY # # ###################################################################### # ---------------------------------------------------------------------- # | Clickjacking | # ---------------------------------------------------------------------- # Protect website against clickjacking. # # The example below sends the `X-Frame-Options` response header with # the value `DENY`, informing browsers not to display the content of # the web page in any frame. # # This might not be the best setting for everyone. You should read # about the other two possible values the `X-Frame-Options` header # field can have: `SAMEORIGIN` and `ALLOW-FROM`. # https://tools.ietf.org/html/rfc7034#section-2.1.'>https://tools.ietf.org/html/rfc7034#section-2.1. # # Keep in mind that while you could send the `X-Frame-Options` header # for all of your website’s pages, this has the potential downside that # it forbids even non-malicious framing of your content (e.g.: when # users visit your website using a Google Image Search results page). # # Nonetheless, you should ensure that you send the `X-Frame-Options` # header for all pages that allow a user to make a state changing # operation (e.g: pages that contain one-click purchase links, checkout # or bank-transfer confirmation pages, pages that make permanent # configuration changes, etc.). # # Sending the `X-Frame-Options` header can also protect your website # against more than just clickjacking attacks: # https://cure53.de/xfo-clickjacking.pdf. # # https://tools.ietf.org/html/rfc7034 # http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx # https://www.owasp.org/index.php/Clickjacking # <IfModule mod_headers.c> # Header set X-Frame-Options "DENY" # # `mod_headers` cannot match based on the content-type, however, # # the `X-Frame-Options` response header should be send only for # # HTML documents and not for the other resources. # <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> # Header unset X-Frame-Options # </FilesMatch> # </IfModule> # ---------------------------------------------------------------------- # | Content Security Policy (CSP) | # ---------------------------------------------------------------------- # Mitigate the risk of cross-site scripting and other content-injection # attacks. # # This can be done by setting a `Content Security Policy` which # whitelists trusted sources of content for your website. # # The example header below allows ONLY scripts that are loaded from the # current website's origin (no inline scripts, no CDN, etc). That almost # certainly won't work as-is for your website! # # For more details on how to craft a reasonable policy for your website, # read: http://www.html5rocks.com/en/tutorials/security/content-security-policy/ # (or the specification: http://www.w3.org/TR/CSP11/). Also, to make # things easier, you can use an online CSP header generator such as: # http://cspisawesome.com/. # <IfModule mod_headers.c> # Header set Content-Security-Policy "script-src 'self'; object-src 'self'" # # `mod_headers` cannot match based on the content-type, however, # # the `Content-Security-Policy` response header should be send # # only for HTML documents and not for the other resources. # <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> # Header unset Content-Security-Policy # </FilesMatch> # </IfModule> # ---------------------------------------------------------------------- # | File access | # ---------------------------------------------------------------------- # Block access to directories without a default document. # # You should leave the following uncommented, as you shouldn't allow # anyone to surf through every directory on your server (which may # includes rather private places such as the CMS's directories). <IfModule mod_autoindex.c> Options -Indexes </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Block access to all hidden files and directories with the exception of # the visible content from within the `/.well-known/` hidden directory. # # These types of files usually contain user preferences or the preserved # state of an utility, and can include rather private places like, for # example, the `.git` or `.svn` directories. # # The `/.well-known/` directory represents the standard (RFC 5785) path # prefix for "well-known locations" (e.g.: `/.well-known/manifest.json`, # `/.well-known/keybase.txt`), and therefore, access to its visible # content should not be blocked. # # https://www.mnot.net/blog/2010/04/07/well-known # https://tools.ietf.org/html/rfc5785 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC] RewriteCond %{SCRIPT_FILENAME} -d [OR] RewriteCond %{SCRIPT_FILENAME} -f RewriteRule "(^|/)\." - [F] </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Block access to files that can expose sensitive information. # # By default, block access to backup and source files that may be # left by some text editors and can pose a security risk when anyone # has access to them. # # http://feross.org/cmsploit/ # # (!) Update the `<FilesMatch>` regular expression from below to # include any files that might end up on your production server and # can expose sensitive information about your website. These files may # include: configuration files, files that contain metadata about the # project (e.g.: project dependencies), build scripts, etc.. <FilesMatch "(^#.*#|\.(bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$"> # Apache < 2.3 <IfModule !mod_authz_core.c> Order allow,deny Deny from all Satisfy All </IfModule> # Apache ≥ 2.3 <IfModule mod_authz_core.c> Require all denied </IfModule> </FilesMatch> # ---------------------------------------------------------------------- # | HTTP Strict Transport Security (HSTS) | # ---------------------------------------------------------------------- # Force client-side SSL redirection. # # If a user types `example.com` in their browser, even if the server # redirects them to the secure version of the website, that still leaves # a window of opportunity (the initial HTTP connection) for an attacker # to downgrade or redirect the request. # # The following header ensures that browser will ONLY connect to your # server via HTTPS, regardless of what the users type in the browser's # address bar. # # (!) Remove the `includeSubDomains` optional directive if the website's # subdomains are not using HTTPS. # # http://www.html5rocks.com/en/tutorials/security/transport-layer-security/ # https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1 # http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx # <IfModule mod_headers.c> # Header set Strict-Transport-Security "max-age=16070400; includeSubDomains" # </IfModule> # ---------------------------------------------------------------------- # | Reducing MIME type security risks | # ---------------------------------------------------------------------- # Prevent some browsers from MIME-sniffing the response. # # This reduces exposure to drive-by download attacks and cross-origin # data leaks, and should be left uncommented, especially if the server # is serving user-uploaded content or content that could potentially be # treated as executable by the browser. # # http://www.slideshare.net/hasegawayosuke/owasp-hasegawa # http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx # http://msdn.microsoft.com/en-us/library/ie/gg622941.aspx # https://mimesniff.spec.whatwg.org/ <IfModule mod_headers.c> Header set X-Content-Type-Options "nosniff" </IfModule> # ---------------------------------------------------------------------- # | Reflected Cross-Site Scripting (XSS) attacks | # ---------------------------------------------------------------------- # (1) Try to re-enable the cross-site scripting (XSS) filter built # into most web browsers. # # The filter is usually enabled by default, but in some cases it # may be disabled by the user. However, in Internet Explorer for # example, it can be re-enabled just by sending the # `X-XSS-Protection` header with the value of `1`. # # (2) Prevent web browsers from rendering the web page if a potential # reflected (a.k.a non-persistent) XSS attack is detected by the # filter. # # By default, if the filter is enabled and browsers detect a # reflected XSS attack, they will attempt to block the attack # by making the smallest possible modifications to the returned # web page. # # Unfortunately, in some browsers (e.g.: Internet Explorer), # this default behavior may allow the XSS filter to be exploited, # thereby, it's better to inform browsers to prevent the rendering # of the page altogether, instead of attempting to modify it. # # http://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities # # (!) Do not rely on the XSS filter to prevent XSS attacks! Ensure that # you are taking all possible measures to prevent XSS attacks, the # most obvious being: validating and sanitizing your website's inputs. # # http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx # http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx # https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 # <IfModule mod_headers.c> # # (1) (2) # Header set X-XSS-Protection "1; mode=block" # # `mod_headers` cannot match based on the content-type, however, # # the `X-XSS-Protection` response header should be send only for # # HTML documents and not for the other resources. # <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> # Header unset X-XSS-Protection # </FilesMatch> # </IfModule> # ---------------------------------------------------------------------- # | Server software information | # ---------------------------------------------------------------------- # Prevent Apache from sending in the `Server` response header its # exact version number, the description of the generic OS-type or # information about its compiled-in modules. # # (!) The `ServerTokens` directive will only work in the main server # configuration file, so don't try to enable it in the `.htaccess` file! # # https://httpd.apache.org/docs/current/mod/core.html#servertokens # ServerTokens Prod # ###################################################################### # # WEB PERFORMANCE # # ###################################################################### # ---------------------------------------------------------------------- # | Compression | # ---------------------------------------------------------------------- <IfModule mod_deflate.c> # Force compression for mangled `Accept-Encoding` request headers # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html <IfModule mod_setenvif.c> <IfModule mod_headers.c> SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding </IfModule> </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Compress all output labeled with one of the following media types. # # (!) For Apache versions below version 2.3.7 you don't need to # enable `mod_filter` and can remove the `<IfModule mod_filter.c>` # and `</IfModule>` lines as `AddOutputFilterByType` is still in # the core directives. # # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype <IfModule mod_filter.c> AddOutputFilterByType DEFLATE "application/atom+xml" \ "application/javascript" \ "application/json" \ "application/ld+json" \ "application/manifest+json" \ "application/rdf+xml" \ "application/rss+xml" \ "application/schema+json" \ "application/vnd.geo+json" \ "application/vnd.ms-fontobject" \ "application/x-font-ttf" \ "application/x-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "image/x-icon" \ "text/cache-manifest" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Map the following filename extensions to the specified # encoding type in order to make Apache serve the file types # with the appropriate `Content-Encoding` response header # (do note that this will NOT make Apache compress them!). # # If these files types would be served without an appropriate # `Content-Enable` response header, client applications (e.g.: # browsers) wouldn't know that they first need to uncompress # the response, and thus, wouldn't be able to understand the # content. # # https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding <IfModule mod_mime.c> AddEncoding gzip svgz </IfModule> </IfModule> # ---------------------------------------------------------------------- # | Content transformation | # ---------------------------------------------------------------------- # Prevent intermediate caches or proxies (e.g.: such as the ones # used by mobile network providers) from modifying the website's # content. # # https://tools.ietf.org/html/rfc2616#section-14.9.5 # # (!) If you are using `mod_pagespeed`, please note that setting # the `Cache-Control: no-transform` response header will prevent # `PageSpeed` from rewriting `HTML` files, and, if the # `ModPagespeedDisableRewriteOnNoTransform` directive isn't set # to `off`, also from rewriting other resources. # # https://developers.google.com/speed/pagespeed/module/configuration#notransform # <IfModule mod_headers.c> # Header merge Cache-Control "no-transform" # </IfModule> # ---------------------------------------------------------------------- # | ETags | # ---------------------------------------------------------------------- # Remove `ETags` as resources are sent with far-future expires headers. # # https://developer.yahoo.com/performance/rules.html#etags # https://tools.ietf.org/html/rfc7232#section-2.3 # `FileETag None` doesn't work in all cases. <IfModule mod_headers.c> Header unset ETag </IfModule> FileETag None # ---------------------------------------------------------------------- # | Expires headers | # ---------------------------------------------------------------------- # Serve resources with far-future expires headers. # # (!) If you don't control versioning with filename-based # cache busting, you should consider lowering the cache times # to something like one week. # # https://httpd.apache.org/docs/current/mod/mod_expires.html <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 month" # CSS ExpiresByType text/css "access plus 1 year" # Data interchange ExpiresByType application/atom+xml "access plus 1 hour" ExpiresByType application/rdf+xml "access plus 1 hour" ExpiresByType application/rss+xml "access plus 1 hour" ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/ld+json "access plus 0 seconds" ExpiresByType application/schema+json "access plus 0 seconds" ExpiresByType application/vnd.geo+json "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" # Favicon (cannot be renamed!) and cursor images ExpiresByType image/vnd.microsoft.icon "access plus 1 week" ExpiresByType image/x-icon "access plus 1 week" # HTML ExpiresByType text/html "access plus 0 seconds" # JavaScript ExpiresByType application/javascript "access plus 1 year" ExpiresByType application/x-javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" # Manifest files ExpiresByType application/manifest+json "access plus 1 year" ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" ExpiresByType text/cache-manifest "access plus 0 seconds" # Media files ExpiresByType audio/ogg "access plus 1 month" ExpiresByType image/bmp "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType video/webm "access plus 1 month" # Web fonts # Embedded OpenType (EOT) ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/eot "access plus 1 month" # OpenType ExpiresByType font/opentype "access plus 1 month" # TrueType ExpiresByType application/x-font-ttf "access plus 1 month" # Web Open Font Format (WOFF) 1.0 ExpiresByType application/font-woff "access plus 1 month" ExpiresByType application/x-font-woff "access plus 1 month" ExpiresByType font/woff "access plus 1 month" # Web Open Font Format (WOFF) 2.0 ExpiresByType application/font-woff2 "access plus 1 month" # Other ExpiresByType text/x-cross-domain-policy "access plus 1 week" </IfModule> # ---------------------------------------------------------------------- # | File concatenation | # ---------------------------------------------------------------------- # Allow concatenation from within specific files. # # e.g.: # # If you have the following lines in a file called, for # example, `main.combined.js`: # # <!--#include file="js/jquery.js" --> # <!--#include file="js/jquery.timer.js" --> # # Apache will replace those lines with the content of the # specified files. # <IfModule mod_include.c> # <FilesMatch "\.combined\.js$"> # Options +Includes # AddOutputFilterByType INCLUDES application/javascript \ # application/x-javascript \ # text/javascript # SetOutputFilter INCLUDES # </FilesMatch> # <FilesMatch "\.combined\.css$"> # Options +Includes # AddOutputFilterByType INCLUDES text/css # SetOutputFilter INCLUDES # </FilesMatch> # </IfModule> # ---------------------------------------------------------------------- # | Filename-based cache busting | # ---------------------------------------------------------------------- # If you're not using a build process to manage your filename version # revving, you might want to consider enabling the following directives # to route all requests such as `/style.12345.css` to `/style.css`. # # To understand why this is important and even a better solution than # using something like `*.css?v231`, please see: # http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/ # <IfModule mod_rewrite.c> # RewriteEngine On # RewriteCond %{REQUEST_FILENAME} !-f # RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp)$ $1.$3 [L] # </IfModule> #AddHandler application/x-httpd-php .html .htm .js  
    Редирект с site.ru/brand/product на site.ru/product:
    #RewriteRule (.*)/(.*) http://site.ru/$2? [R=301,L] RewriteCond %{HTTP_HOST} ^/product&manufacturer_id=\[0-9]/product_id=\[0-9]$ RewriteRule ^(.*)$ http://site.ru/product_id=\[0-9]$2? [R=301,L]  

    content bot
    Nginx, 301 редиректы с http на https протоколы и наоборот
    Nginx, 301 редирект с http на https протокол
    Если у вас на сайте есть SSL сертификат для домена, то вы можете настроить https протокол. После чего для 301-го редиректа вам необходимо добавить следующий код в файл конфигурации nginx для домена:
    server { #... if ($scheme = http) { return 301 https://$server_name$request_uri; } } или
    server { #... listen server_ip:80; server_name www.site.com; rewrite ^ https://www.site.com$request_uri? permanent; }  
    Nginx, 301 редирект с https на http протокол
    Обратный пример конфигурации для редиректа с http на https:
    server { listen 443; server_name www.site.com; rewrite ^ http://www.site.com$request_uri? permanent; } server { listen 80; server_name www.site.com; #... }  
    Nginx, 301 редирект с www на без www
    Пример 301-го редиректа на основное зеркало без www:
    server { #... if ($host ~* www\.(.*)) { set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent; } } или
    server { #... server_name www.site.com; rewrite ^/(.*)$ http://site.com/$1 permanent; }  
    Nginx, 301 редирект с без www на с www
    Обратный пример 301-го редиректа на основное зеркало сайта с www:
    server { #... server_name site.com; rewrite ^/(.*)$ http://www.site.com/$1 permanent; } server { listen 80; server_name www.site.com; #... }  
    Nginx, 301 редирект для одной страницы
    Если у страницы поменялся URL, то лучше сделать 301 редирект на новый URL:
    server { #... if ( $request_filename ~ oldpage/ ) { rewrite ^ http://www.site.com/newpage/? permanent; } #... }  
    Nginx, 301 редирект для папки
    Аналогичный пример 301-го редиректа для папки:
    server { #... if ( $request_filename ~ oldfolder/.+ ) { rewrite ^(.*) http://www.site.com/newfolder/$1 permanent; } #... }  
    Nginx, 301 редирект с одного домена на другой
    Если вы сменили домен сайт и хотите перенести вес старого домена на новый, то можно сделать 301-й редирект со старого домена на новый:
    server { server_name domain.com www.site.com; rewrite ^ $scheme://www.new-site.com; }  
    Nginx, 301 редирект с каждой страницы одного домена на такой же URL адрес другого домена
    Если вы планируете изменить свой домен или изменить название предприятия, то пере направление домена является единственным лучшим решением для сохранения пользователей и перевода их запросов на новый домен:
    server { server_name site.com www.site.com; rewrite ^ $scheme://www.new-site.com$request_uri permanent; }  
    Nginx, 301 редирект со страниц со слешем "/" на страницы без слеша в конце URL
    Часто бывает так что одна и та же страница доступна по двум URL, например /may-best-page и /my-best-page/, если человеку понятно что это одна и та же страница, то поисковые системы понимают это как две разные страницы, соответственно разбивают вес страницы, а также показываются в аналитике (статистике) как 2 разные страницы. Для того, что бы избежать этого вы можете сделать 301 редирект со страниц со слешем в конце URL на без него:
    server { #... rewrite ^/(.*)/$ /$1 permanent; #... }  
    Nginx, 301 редирект со страниц без слеша на страницы со слешем в конце URL
    Причина делать такой редирект та же, что и в ситуации описанным выше, за исключением того, что редирект необходимо делать со страницы без слеша в конце URL на страницу со слешем в конце URL:
    server { #... rewrite ^(.*[^/])$ $1/ permanent; #... }  
    Дополнительно
    Не забудьте перед использованием примеров сменить site.com на свой домен. После внесения изменений в файл конфигурации nginx для домена необходимо перезапустить nginx:
    service nginx reload или
    service nginx restart или перезапустить с панели
     
    Для редиректа с site.ru/brand/product на site.ru/product
    при переездах и т.д. добавлять в блок server :
    if (!-d $request_filename){ set $r 1; } if (!-f $request_filename){ set $r 2$r; } if ($r = 21){ rewrite ^/(.*)/(.*)$ $scheme://$host/$2 permanent; }  

    content bot

    TWIG

    От content bot, в PHP,

    Twig - компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP.
    TWIG - WIKI
    Документация - ENG
    Документация - RUS
     
    GitHub - TWIG
     
    Конвертер - PHP в TWIG
    Конвертер - TWIG в PHP
     
    Ещё один
    Конвертер - PHP в TWIG

    content bot

    PHP.ini

    От content bot, в PHP,

    php.ini —текстовый конфигурационный файл, содержащий множество настроек интерпретатора PHP, а также отвечающий за загрузку модулей. Синтаксис файла php.ini довольно прост, что позволяет редактировать его, не обладая глубокими специальными знаниями. Файл можно редактировать в любом текстовом редакторе к примеру - Блокнот в Windows, Notepad++ или emacs в Unix и прочих редакторах.
    Файл php.ini содержит параметры интерпретации PHP-кода, безопасности системы, способов работы с файлами и данными, а также информация о доступных расширениях PHP.
     
    В OpenCart php.ini по умолчанию содержит:
     
    magic_quotes_gpc = Off register_globals = Off default_charset = UTF-8 memory_limit = 64M max_execution_time = 36000 upload_max_filesize = 999M safe_mode = Off mysql.connect_timeout = 20 session.auto_start = Off session.use_only_cookies = On session.use_cookies = On session.use_trans_sid = Off session.cookie_httponly = On session.gc_maxlifetime = 3600 allow_url_fopen = On ;display_errors = 1 ;error_reporting = E_ALL  
    С полным списком директив файла php.ini и их описаниями можно ознакомиться в документации к PHP в разделе - Директивы php.ini

    content bot
    Включение вывода всех ошибок и предупреждений в файле .htaccess
    php_value display_errors 1 php_value display_startup_errors 1 php_value error_reporting E_ALL Включение вывода всех ошибок и предупреждений в файле php.ini
    error_reporting = E_ALL display_errors = On display_startup_errors = On Включение вывода всех ошибок и предупреждений в коде PHP-скриптов
    Включить вывод уведомлений и предупреждений можно, добавив в начало нужного .php файла следующие строки:
    ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); Исключая тип Notice
    error_reporting(E_ALL & ~E_NOTICE)  
    Вывод с логированием через конфигурацию веб-сервера
    Чтобы настроить вывод с логированием через конфигурацию веб-сервера, введите:
    для Apache — ErrorLog «/var/log/apache2/my-website-error.log» для Nginx — error_log /var/log/nginx/my-website-error.log

×
×
  • Создать...