Пример настройки файла htaccess php
Примеры записей в htaccess: Индексный файл, Редирект с сохранением рейтинга страницы, Склеивание www и http, Создание ЧПУ или ЧеловекуПонятныхУрлов, Редирект всех файлов папки на один файл, Защита от хотлинков, Определение кодировки и многое другое!
Указываем индексный файл (который первым открывает при обращении к сайту)
DirectoryIndex index.php index.html index.shtml
Можно указать один или несколько файлов
Редирект htaccess php
Redirect / http://www.newsite.ru/
Глобальный редирект(первый /) ВСЁ пересылаем на новый адрес http://www.newsite.ru/
Redirect /katalog http://www.newsite.ru/newkatalog
Все обращения к
katalogпереадресуем на домен
newsite.
и
www.yoursite.ru/article/1RewriteEngine on
RewriteRule cat/(.*)/(.*)/$ /art.php?$1=$2
В результате
www.yoursite.ru/art.php?type=123превращается в
www.yoursite.ru/cat/type/123/:
Вот ещё частные варианты:
RewriteEngine on
RewriteRule katalog-saitov[/]*$ article.php?id=$1 [L]
Статья с технически адресом
www.yoursite.ru/article.php?id=1теперь будет доступна со своим понятным человеку названием
www.yoursite.ru/katalog-saitov.
#Меняем /images/exit.jpg на другое изображение. Можно неприличное
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/exit.jpg [L]
Определение кодировки htaccess php
Дополнительные варианты самых популярных кодировок: UTF-8, Windows-1251, KOI8-R. В примерах рассмотрим самую распространённую UTF-8
AddDefaultCharset UTF8 # кодировка файлов, в которой по умолчанию отдаёт документы
AddCharset UTF8 .html # Пример: обрабатывает в данной кодировке html
AddCharset UTF8 * # Пример: обрабатывает в данной кодировке Все файлы# Обработка в данной кодировке определённого файла
<Files "index.html">
AddCharset UTF8 .html
</Files>CharsetDisable On # Отменяем перекодировку Сервером загруженных файлов
CharsetDefault UTF8 # Кодировка, передаваемая Сервером Браузеру по умолчаниюCharsetSourceEnc UTF8 # Принудительная Перекодировка ВСЕХ загруженных на сервер файлов
Создание своих страниц ошибок
Если Вам хочется видеть после неправильной ссылки другую страницу, сделанную, например, самим собой, то указываем в . htaccess следующий код (ну и соответственно делаем там свои страницы):
# ошибка сервера, неверный запрос
ErrorDocument 400 /error/badrequest.html# неавторизован
ErrorDocument 401 /error/authreqd.html# вход запрещён
ErrorDocument 403 /error/forbid.html# самая распространённая - страница не найдена
ErrorDocument 404 /error/notfound.html# внутренняя ошибка сервера
ErrorDocument 500 /error/serverr.html
Видов ошибок на самом деле больше. Можете создать дополнительно и для них записи, опираясь на весь список |
Запрещаем доступ
Скорее всего Вы столкнётесь с тем, что часть файлов и директорий надо будет закрыть от общего доступа.
Закрываем от всех
deny from all
Закрываем конкретный файл от всех
<Files admin.php>
deny from all
</Files>
Разрешаем доступ только с одного ip
order deny,allow
deny from all
allow from 192.(.*)$ $1.php
# php можно заменить другим расширением. Например: html, htm, shtml, asp
Запрещаем отображать содержимое директории, если нет индексного файла
Вы скорее всего хоть раз видели текст Index of и список файлов. Так происходит в том случае, когда в директории нет индексного файла (например index.php), а система предлагает выбрать файл для дальнейшего открытия. Минус этого заключается в том, что случайный пользователь может увидеть список и содержание всех файлов директории.
Options -Indexes
Секреты настройки файла .htaccess | Stebnev Studio
3,736 просмотров всего, 2 просмотров сегодня
Оглавление
- Как правильно настроить .htaccess и зачем это нужно
- Прописываем htaccess правильно
- Настройка ЧПУ
- Настройка свойств PHP
- Кэширование данных
- Настройка редирект в htaccess
- Как правильно сделать 301 редирект в htaccess
- Настройка 404 ошибки в htaccess
- Настройка редиректа на https в htaccess
- Управление доступом
- Вместо заключения
Файл . htaccess дает пользователю возможность свободно управлять web-сервером Apache и применять настройки по отношению к директориям и папкам, которые расположены на сервере.
Успешность развития и продвижения интернет-проекта во многом зависит от правильной адекватной работы сервера, на котором расположен сайт. Сейчас большинство использует Apache – в основном, из-за простоты настройки и большого количества предоставляемых возможностей. Настраивать его работу можно как в главном конфигурационном файле, так и с помощью .htaccess. Расположенные на сервере в отдельных папках, они указывают ему, как именно действовать в данном подкаталоге.
Правильная настройка htaccess дает возможность отдельно настроить редиректы на сайте, прописать внутренние изменения url, добавить авторизацию по паролю и др. О том, как это можно сделать, поговорим далее.
Как правильно настроить .htaccess и зачем это нужно
Владельцы сайтов, которые пользуются услугами виртуального хостинга, доступа к httpd. conf чаще всего не имеют. Поэтому единственным способом управления сервером для них будет настройка файла htaccess.
Правило: прежде, чем начинать настройку htaccess, в обязательном порядке сделайте копию рабочего файла. Это поможет восстановить данные, если что-то пойдет не так. Неправильные изменения сделают сайт недоступным для пользователей и поисковых роботов. Поэтому очень важно иметь актуальную резервную копию файла конфигурации.
С помощью директив, прописанных в конфигурационном файле, пользователь или владелец сайта получает возможность настройки:
- ЧПУ.
- Опций PHP.
- Кэширования.
- Редиректов.
- Обработки ошибок 404.
- Перенаправления на https
- Управления доступом и пр.
Правильный файл htaccess значительно упрощает и оптимизирует работу с сайтом, дает возможность влиять на выдачу, сформированную сервером.
Прописываем htaccess правильно
Синтаксис директив файла конфигурации достаточно прост.
При написании пары команд и их опций обязательно разделяются пробелом:
Команда параметр1 параметр2 флаги
Помимо команд можно использовать вложенные структуры, необходимые для активации либо проверки доступности отдельных модулей.
Обратите внимание, что несоблюдение синтаксиса может привести к появлению ошибок сервера. Правильный htaccess должен быть написан с соблюдением следующих требований:
- Путь к файлу или директории указывается от корня сервера:
/home/mdhscyhq/public_html/ - Домен прописывается с указанием протокола:
ru
- Название файла должно содержать «точку»:
.htaccess - Файл должен записываться в формате UNIX.
Путь от корня можно спросить у администратора сервера или посмотреть самостоятельно. Для этого достаточно запустить на сайте функцию PHP–phpinfo и посмотреть значение doc_root.
1.Настройка ЧПУ
ЧПУ, или человеко-понятный урл, положительно (хоть и незначительно) влияет на релевантность страницы сайта запросу пользователя с точки зрения поискового робота. А значит – повышает позицию выдачи в поиске. А еще более удобен для пользователя при навигации.
Сравните:
http://yoursupersite.ru/index.html?id=4
и
http://yoursupersite.ru/razrabotka-sayta/
В последнем случае сразу становится понятно, на какой странице мы находимся и какую информацию можно на ней получить.
В ЧПУ можно прописать ключевые слова или фразы: кириллицей или транслитом.
Вот так, к примеру, из стандартного url:
tovar.html?id=101
с помощью изменений настроек ЧПУ в htaccess можно сделать вполне понятный url:
tovar-101. category/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ tovar.html?id=$20
2.Настройка свойств PHP
Даже если хостер закрыл доступ к php.ini, но вам обязательно необходимо изменить некоторые свойства PHP, это можно сделать с помощью файла htaccess.
Пример:
<ifModule mod_php.c> php_value post_max_size 10M php_value upload_max_filesize 32M php_value max_execution_time 200 php_value default_charset utf-8 </ifModule>
Директивы:
upload_max_filesize позволяет выполнить загрузку файлов размером до 32Мб (по умолчанию – до 16Мб).
post_max_size увеличивает размер постинга до 10Мб (стандарт – 2Мб).
3.Кэширование данных
В файле htaccess можно выполнить настройку кэширования, если по каким-либо причинам это невозможно организовать с помощью синтаксиса PHP. В таком случае для ускорения загрузки данных с сервера можно применить следующие модули:
- mod_headers — дает возможность устанавливать в заголовке ответа сервера разные правила кэширования для файлов различных типов.
- mod_expires — отвечает за срок «устаревания» файлов, время, по истечении которого, файл будет помещен в кэш браузера.
При схожем смысле модули имеют разный синтаксис. Допускается использование любого из них (выбор зависит от того, какой установлен на сервере).
4.Настройка редирект в htaccess
Настройка файла htaccess позволяет выполнить простую и сложную переадресацию url. То есть, вы можете перенаправить пользователя на другой адрес глобально:
Redirect / http://www.yoursupersite.ru
или при запросе отдельных страниц на сайте:
Redirect / blog http://yoursupersite.ru/blog
Правильный редирект в htaccess имеет следующий синтаксис:
Redirect [status] url_local url_redirect
Существует несколько несложных правил, которые стоит соблюдать при настройке переадресации через htaccess:
- Редиректы страниц в файле нужно располагать от более частных (вверху страницы) к глобальным. То есть сверху вниз.
- Необходимо избегать двух и более последовательных редиректов, т.к. это увеличивает время ответа и негативно оценивается поисковыми роботами.
Как правильно сделать 301 редирект в htaccess
В случае переноса сайта на новый домен или смены CMS возникает необходимость перенаправления пользователя со старых url на новые адреса. Редирект с номером ошибки 301 (Permament Redirect) сообщает роботу о том, что документы и страницы были перемещены на постоянной основе. Это позволяет сохранить позиции сайта в поисковых системах, сохранить ссылочную массу и PageRank.
Настройка 301 редиректа в htaccess может быть выполнена различными способами, в зависимости от предустановленного ПО и поставленных целей.
Самый простой вариант:
Redirect 301 /new-1/ http://yoursupersite.ru/new-2/
Недостаток этого метода состоит в том, что необходимо по отдельности перечислить все адреса, с которых и на которые будет осуществляться перенаправление. Поэтому для более сложных редиректов лучше использовать модуль mod_rewrite, который позволяет выполнить любой тип преобразования url и при этом настроить зависимость преобразования от ряда условий и факторов. (.*)$ http://site.ru/$1 [L,R=301]
5.Настройка 404 ошибки в htaccess
Удалили или перенесли страницу с сайта? Пользователь, перейдя по ссылке в поисковой системе или вводя неправильный url, увидит сообщение об ошибке 404. И, скорее всего, закроет вкладку.
Чтобы этого не произошло, более правильным будет отдельно настроить редирект 404 в htaccess и перенаправить посетителя на главную страницу сайта:
ErrorDocument 404 http://www.yoursupersite.ru/
Однако это не всегда такое решение оправдано. Маркетологи рекомендуют создавать отдельную страницу «Not Found», которая будет работать на увеличение конверсии. Подробнее о дизайне страницы «Ошибка 404» можно почитать здесь. А перенаправить пользователя на нее можно с помощью следующих настроек в htaccess:
ErrorDocument 404http://www.yoursupersite.ru/404.html
Аналогичным образом можно настроить вывод сообщений об ошибках:
ErrorDocument 401 http://www.yoursupersite.ru/401.html ErrorDocument 403 http://www.yoursupersite.ru/403.html ErrorDocument 500 http://www.yoursupersite.ru/500.html
6. Настройка редиректа на https в htaccess
Использование сертификата безопасности SSL и протокола https обеспечивает более безопасное соединение и достаточно высоко ценится поисковыми системами при ранжировании. Чтобы перенаправить всех пользователей сайта на этот протокол и тем самым обеспечить надежность передачи данных, достаточно внести в файл htaccess следующие настройки:
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
7.Управление доступом
В файле htaccess с помощью специальных директив можно ограничить доступ расположенным в текущей директории файлам и папкам:
deny from all
Владелец или администратор сайта может разрешить доступ пользователям с конкретного IP-адреса. Это выполняется следующим образом
order deny,allow deny from all allow from 192.168.ХХ.Х
При необходимости, можно ограничить или даже запретить доступ к файлам и папкам каталога по IP. Выполняется это с помощью следующей директивы:
deny from 192.168.ХХ.Х
Вместо заключения
Правильная настройка htaccess обеспечит правильную работу сайта. Однако не стоит забывать о том, что он является только дополнительным конфигурационным файлом, поэтому по возможностям значительно уступает httpd.conf. Но позволяет применять более тонкие настройки к отдельным папкам, расположенным на сервере.
Php чпу своими руками • Вэб-шпаргалка для интернет предпринимателей!
Содержание
- 1 Что такое ЧПУ?
- 1.1 Какие преимущества дают SEF URL?
- 1.2 Недостатки ЧПУ ссылок
- 1.3 Когда ЧПУ не нужны?
- 1.4 Что ещё нужно знать о ЧПУ?
- 1.4.1 Коротко: в чём вся суть?
- 2 Создание SEF ссылок с помощью mod_rewrite
- 2.1 Правила и условия mod_rewrite
- 3 Квантификаторы или кванторы
- 4 Экранирование
- 5 Ограничение начала и конца строки (маркеры)
- 5.
1 Обратные связи в mod_rewrite
- 5.
- 6 Флаги
- 7 Живой пример использования mod_rewrite
- 8 Что такое ЧПУ?
- 8.1 Какие преимущества дают SEF URL?
- 8.2 Недостатки ЧПУ ссылок
- 8.3 Когда ЧПУ не нужны?
- 8.4 Что ещё нужно знать о ЧПУ?
- 8.4.1 Коротко: в чём вся суть?
- 9 Создание SEF ссылок с помощью mod_rewrite
- 9.1 Правила и условия mod_rewrite
- 10 Квантификаторы или кванторы
- 11 Экранирование
- 12 Ограничение начала и конца строки (маркеры)
- 12.1 Обратные связи в mod_rewrite
- 13 Флаги
- 14 Живой пример использования mod_rewrite
- 14.1 Рекомендуем к прочтению
Здравствуйте дорогие гости и постоянные читатели блога о создании сайтов – Site on! В одной из предыдущих статей этого раздела я обещал вам рассказать, как всего за пару минут можно создать собственные ЧПУ ссылки. Несмотря на то, что статья может показаться вам объёмной, а для некоторых и сложной – я надеюсь, когда дочитаете её до конца, вы согласитесь, что в создании ЧПУ действительно нет ничего сверхъестественного.
Что такое ЧПУ?
ЧПУ – это исковерканная англоязычная аббревиатура SEF URL (search engines friendly url). Она обозначает адреса ссылок, которые дружелюбны для поисковых систем. О ЧПУ я также писал в статье про внутреннюю оптимизацию сайта. В русскоязычном варианте SEF URL пишется как ЧПУ – человеко-понятные url. Что всё это значит? Это значит, что адреса ваших ссылок будут иметь осознанный текст, а не технический мусор, за примером можете сходить по ссылке выше.
Какие преимущества дают SEF URL?
Во-первых, очевидно, что ЧПУ ссылки уже в самом своём адресе могут содержать полезную для пользователя информацию. Из такого адреса сразу понятно, о чём будет статья или страница в целом.
Во-вторых, SEO. Такие ссылки приветствуются поисковыми системам, пару лет назад они могли бы дать вам значительный перевес над конкурентами. Сегодня подобные ссылки являются само собой разумеющимися, сейчас редко встретишь сайты с не ЧПУ ссылками, однако они до сих пор есть.
В-третьих, это престиж. Когда я захожу на сайты, где вместо понятного и красивого адреса в ссылках содержится разного рода мусор, а то и засекреченная информация – я задаюсь вопросом: «Вроде бы приличный сайт, но почему разработчики не сделали ЧПУ? Неужели это было так сложно? Может им настолько нет дела до подобных вещей или просто не хватает знаний и навыков?». В общем, для меня такие сайты большая загадка.
В-четвёртых, безопасность. Сайты с ЧПУ ссылками не содержат в своём адресе техническую информацию переданную методом GET (уроки PHP), которую можно запросто использовать для взлома сайта.
И последнее: ЧПУ – как средство навигации. Если ссылка понятна пользователю, то он сам может переходить по разделам сайта, просто редактируя ваш URL. Например:
Если удалить из данной ссылки её последнюю часть (2-sublime-text-2), то мы попадём в раздел, к которому относится данная статья:
В данном случае это раздел «Инструменты». То есть благодаря SEF ссылкам мы можем построить понятную людям и роботам иерархию нашего сайта, что опять-таки будет полезно и для посетителей и для продвижения в поисковых системах.
Недостатки ЧПУ ссылок
Первое: возможно, вам придётся повозиться и даже помучаться, чтобы их настроить или вовсе сделать с нуля.
Второе: ваш сайт станет дольше грузится, а именно, на пару десятитысячных секунды 🙂 Это связано с тем, что для работы ЧПУ подключается специальный модуль веб-сервера Apache – mod_rewrite, которому понадобится это «огромное» количество времени на обработку ссылок.
Когда ЧПУ не нужны?
ЧПУ ссылки могут быть и лишними, например, если у вас закрытый корпоративный портал, где вся работа осуществляется только авторизованными пользователями, а для всех остальных, в том числе и для поисковых роботов доступ закрыт.
Также ЧПУ будет излишеством в back-end вашего сайта, то есть в панели администратора.
Что ещё нужно знать о ЧПУ?
Во всех актуальных версиях CMS данная проблема уже решена. Всё что вам нужно, чтобы сделать ЧПУ ссылки, это лишь включить соответствующие настройки в движке вашего сайта.
Но что если мы имеем дело с сайтом на чистом PHP, без CMS, или же хотим разработать свою собственную CMS в которой хотим сделать SEF URL? Для подобных случаев, а также для людей, которые хотят углубиться и понять всю суть преобразований обычной ссылки в ЧПУ, я и написал остальную часть статьи. Если вы читали мои предыдущие статьи, то знаете, что мой блог как раз относится к этой категории, то есть сайтам, написанным с нуля на PHP, без использования готовых CMS.
Ах да, ещё один момент: из личного опыта не советую делать кириллических URL.
Коротко: в чём вся суть?
Пишу для тех, кто совсем не в курсе дел. Везде в наших тегах гиперссылки мы будем указывать ЧПУ адреса:
Суть в том, чтобы из красивого и понятного человеку URL (ЧПУ) сделать на лету URL, который будет полезен разработчику PHP (не ЧПУ):
При этом всем на свете (посетителям, поисковым системам, всем) будет видна именно ЧПУ ссылка, но мы как разработчики PHP будем знать, что таит в себе URL на самом деле. В конце статьи, для полного понимания, я покажу все этапы, как ЧПУ работают у меня на блоге.
Создание SEF ссылок с помощью mod_rewrite
mod_rewrite – это модуль веб-сервера Apache, предназначенный для перезаписи URL. Естественно, для начала работы вы должны включить этот модуль в настройках Apache, эти настройки находятся в файле httpd.conf, вам нужно будет раскомментировать строку с именем данного модуля. У 99% хостинг-провайдеров он включён, за исключением совсем ужасных хостингов. Кстати говоря, используя Denwer, у меня не получилось нормально настроить собственные ЧПУ, мне не захотелось долго искать в чём именно проблема (мешают собственные редиректы Денвера) и я установил Апач отдельно. Для тех, кто не знает, как установить сервер Апач не используя Денвер, я напишу инструкцию в одной из будущих статей. А здесь мы продолжаем разбирать наши ЧПУ.
Все наши правила преобразований URL записываются в небезызвестный файл .htaccess, который должен лежать в корне нашего сайта. useful/([a-z]*) – это шаблон ожидаемого url,
а /index.php?category=useful&article=$1 – это то, во что мы его конвертируем, если пришедший URL подошёл под шаблон.
При этом $1 равен тому, что написано в круглых скобках, то есть $1 = [a-z]* Если бы круглые скобки встречались 2 раза, то у нас были бы переменная $1 и $2, если круглые скобки встречаются 3 раза, то переменные $1, $2, $3 и так далее. При этом переменные создаются в том же порядке, как идут круглые скобочки.
Понятно? – молодцы. Непонятно? — идёмте дальше, мы ещё к этому вернёмся. Также хочу обратить ваше внимание на то, что для лучшего понимания статьи, вы уже должны обладать начальными знаниями о PHP, а также о работе с методами GET и POST. Продолжаем.
Для того чтобы наш обработчик, то есть mod_rewrite не срабатывал каждый раз без надобности, мы в RewriteRule указываем шаблон, которому должны соответствовать приходящие URL. Если URL не соответствует шаблону, то mod_rewrite просто не сработает и не преобразует пришедший SEF URL в URL, с которым мы можем работать.
То есть на данном этапе вам важно понять саму суть: в ЧПУ ссылках не передаются параметры, а без параметров мы не можем ничего сделать в PHP с этой ссылкой, поэтому с помощью mod_rewrite мы преобразуем ЧПУ ссылку без параметров в не ЧПУ ссылку с параметрами. Что такое параметры? В примере выше имеем 2 параметра:
Параметр category и параметр article.
Опять-таки обращаю ваше внимание, что про параметры вы уже должны были знать, я лишь вкратце вам напомнил.
В шаблонах мы можем использовать символы и символьные классы. Символ точки обозначает абсолютно любой символ.
- . – любой одиночный символ
- [redf] – это класс символов. Обозначает наличие одного из перечисленных символов с учётом регистра.
внутри квадратных скобочек обозначает, что шаблон НЕ должен содержать данных символов.
- site|cite – обозначает альтернативу: подходит site или cite.
Квантификаторы или кванторы
Все предыдущие примеры обозначали один символ (одну единицу), а что если мы хотим показать, что символов из этого промежутка [a-zA-Z] может быть не один, а сколько угодно. Для этого мы должны использовать квантификаторы:
- ? — 0 или 1 символ из предшествующего текста (класса символов, символа и тд.)
- * — 0 или любое количество символов из предшествующего текста (n>0)
- + — 1 или любое количество символов из предшествующего текста (n>1)
- — ровно n символов, где n – конкретное число.
- — должно быть ровно 4 символа из предшествующего текста.
- — 4 или 5 символов
- — от нуля до 6 символов
- — от 4 до бесконечности символов
Примером может послужить наша уже известная строчка:
В которой мы применили квантификатор (квантор) звёздочку (*) после класса символов [a-z]. внутри квадратных скобок обозначает отрицание, не путайте!
Обратные связи в mod_rewrite
$n – это наша «переменная» в круглых скобках, о них мы уже говорили. Работает для RewriteRule.
%n – то же самое, только в RewriteCond. RewriteCond мы ещё не рассматривали, он у нас впереди.
Итак, если RewriteRule – это наши правила преобразования URL, то RewriteCond – это условие, аналог if в PHP. RewriteCond нужно в ситуациях, когда вам необходимо выполнить URL преобразование (RewriteRule) только при выполнении какого-то условия.
У сервера есть свои собственные переменные, которые мы можем использовать в наших условиях RewriteCond:
Синтаксис применения серверных переменных таков:
Давайте составим наше первое условие:
Если посетитель зашёл с браузера Mozilla Firefox, то выполняем следующее правило. Как видите, в отличие от PHP мы не используем фигурные скобки для обрамления нашего правила, которое выполнится, если условие TRUE.
RewriteCond позволяет использовать операторы сравнения: (больше), = (равно). Также есть специальные значения, например:
- -d (является ли каталогом)
- -f (является ли файлом)
- -s (является ли файлом с ненулевым размером)
- ! – отрицание.
Флаги
- nocase|NC – можно писать либо nocase, либо NC, это одно и то же, обозначает регистро-независмость. То есть мы можем больше не писать:
Вместо этого написать так:
forb > Если нужно поставить одновременно несколько флагов, ставим их через запятую, например:
Как вы уже могли догадаться, mod_rewrite можно использовать не только для ЧПУ, но и для многих других интересный целей, например, клоакинга – это метод чёрного SEO, когда по одному и тому же адресу посетителям отдаётся одна страница, а поисковым роботам совершенно другая. Ну и под конец статьи, я покажу вам живой пример использования всего написанного выше и как же это всё работает взаимодействуя с нашим PHP.
Живой пример использования mod_rewrite
Итак, вот какой вид имеет мой файл .htaccess:
Что происходит в этом ужасе? Для начала я проверяю, не набрал ли человек старой закалки мой адрес с www, если набрал, то перенаправляю его на тот же адрес, только без www. Зачем именно это нужно я напишу в одной из следующих статей, если коротко, то для SEO. После перенаправления с www на без www у нас заново считался наш файл .htaccess, поэтому всё начинается снова: проверяем, не пришёл ли нам УРЛ с www, в этот раз — нет. Далее (второй RewriteCond) мы проверяем, если наш УРЛ действительно без www, то делаем преобразования, а именно: заносим весь URL (без имени домена) в параметр article.
На этом работа .htaccess завершена и на сцену выходит PHP. Следующий код размещён в index.php:
О том, как работает конструкция switch, я подробно писал в статье по указанной ссылке. Вот и всё, дамы и господа! Наконец-то наша статья подошла к логическому завершению, и теперь вы сможете попрактиковать полученные знания. Я прощаюсь с вами до выхода новой статьи, а напоследок хочу привести интересную цитату:
«Несмотря на тонны примеров и документацию, mod_rewrite это Вуду. Чертовски клёвый Вуду, но все-таки Вуду.»
Здравствуйте дорогие гости и постоянные читатели блога о создании сайтов – Site on! В одной из предыдущих статей этого раздела я обещал вам рассказать, как всего за пару минут можно создать собственные ЧПУ ссылки. Несмотря на то, что статья может показаться вам объёмной, а для некоторых и сложной – я надеюсь, когда дочитаете её до конца, вы согласитесь, что в создании ЧПУ действительно нет ничего сверхъестественного.
Что такое ЧПУ?
ЧПУ – это исковерканная англоязычная аббревиатура SEF URL (search engines friendly url). Она обозначает адреса ссылок, которые дружелюбны для поисковых систем. О ЧПУ я также писал в статье про внутреннюю оптимизацию сайта. В русскоязычном варианте SEF URL пишется как ЧПУ – человеко-понятные url. Что всё это значит? Это значит, что адреса ваших ссылок будут иметь осознанный текст, а не технический мусор, за примером можете сходить по ссылке выше.
Какие преимущества дают SEF URL?
Во-первых, очевидно, что ЧПУ ссылки уже в самом своём адресе могут содержать полезную для пользователя информацию. Из такого адреса сразу понятно, о чём будет статья или страница в целом.
Во-вторых, SEO. Такие ссылки приветствуются поисковыми системам, пару лет назад они могли бы дать вам значительный перевес над конкурентами. Сегодня подобные ссылки являются само собой разумеющимися, сейчас редко встретишь сайты с не ЧПУ ссылками, однако они до сих пор есть.
В-третьих, это престиж. Когда я захожу на сайты, где вместо понятного и красивого адреса в ссылках содержится разного рода мусор, а то и засекреченная информация – я задаюсь вопросом: «Вроде бы приличный сайт, но почему разработчики не сделали ЧПУ? Неужели это было так сложно? Может им настолько нет дела до подобных вещей или просто не хватает знаний и навыков?». В общем, для меня такие сайты большая загадка.
В-четвёртых, безопасность. Сайты с ЧПУ ссылками не содержат в своём адресе техническую информацию переданную методом GET (уроки PHP), которую можно запросто использовать для взлома сайта.
И последнее: ЧПУ – как средство навигации. Если ссылка понятна пользователю, то он сам может переходить по разделам сайта, просто редактируя ваш URL. Например:
Если удалить из данной ссылки её последнюю часть (2-sublime-text-2), то мы попадём в раздел, к которому относится данная статья:
В данном случае это раздел «Инструменты». То есть благодаря SEF ссылкам мы можем построить понятную людям и роботам иерархию нашего сайта, что опять-таки будет полезно и для посетителей и для продвижения в поисковых системах.
Недостатки ЧПУ ссылок
Первое: возможно, вам придётся повозиться и даже помучаться, чтобы их настроить или вовсе сделать с нуля.
Второе: ваш сайт станет дольше грузится, а именно, на пару десятитысячных секунды 🙂 Это связано с тем, что для работы ЧПУ подключается специальный модуль веб-сервера Apache – mod_rewrite, которому понадобится это «огромное» количество времени на обработку ссылок.
Когда ЧПУ не нужны?
ЧПУ ссылки могут быть и лишними, например, если у вас закрытый корпоративный портал, где вся работа осуществляется только авторизованными пользователями, а для всех остальных, в том числе и для поисковых роботов доступ закрыт.
Также ЧПУ будет излишеством в back-end вашего сайта, то есть в панели администратора.
Что ещё нужно знать о ЧПУ?
Во всех актуальных версиях CMS данная проблема уже решена. Всё что вам нужно, чтобы сделать ЧПУ ссылки, это лишь включить соответствующие настройки в движке вашего сайта.
Но что если мы имеем дело с сайтом на чистом PHP, без CMS, или же хотим разработать свою собственную CMS в которой хотим сделать SEF URL? Для подобных случаев, а также для людей, которые хотят углубиться и понять всю суть преобразований обычной ссылки в ЧПУ, я и написал остальную часть статьи. Если вы читали мои предыдущие статьи, то знаете, что мой блог как раз относится к этой категории, то есть сайтам, написанным с нуля на PHP, без использования готовых CMS.
Ах да, ещё один момент: из личного опыта не советую делать кириллических URL.
Коротко: в чём вся суть?
Пишу для тех, кто совсем не в курсе дел. Везде в наших тегах гиперссылки мы будем указывать ЧПУ адреса:
Суть в том, чтобы из красивого и понятного человеку URL (ЧПУ) сделать на лету URL, который будет полезен разработчику PHP (не ЧПУ):
При этом всем на свете (посетителям, поисковым системам, всем) будет видна именно ЧПУ ссылка, но мы как разработчики PHP будем знать, что таит в себе URL на самом деле. В конце статьи, для полного понимания, я покажу все этапы, как ЧПУ работают у меня на блоге.
Создание SEF ссылок с помощью mod_rewrite
mod_rewrite – это модуль веб-сервера Apache, предназначенный для перезаписи URL. Естественно, для начала работы вы должны включить этот модуль в настройках Apache, эти настройки находятся в файле httpd.conf, вам нужно будет раскомментировать строку с именем данного модуля. У 99% хостинг-провайдеров он включён, за исключением совсем ужасных хостингов. Кстати говоря, используя Denwer, у меня не получилось нормально настроить собственные ЧПУ, мне не захотелось долго искать в чём именно проблема (мешают собственные редиректы Денвера) и я установил Апач отдельно. Для тех, кто не знает, как установить сервер Апач не используя Денвер, я напишу инструкцию в одной из будущих статей. А здесь мы продолжаем разбирать наши ЧПУ.
Все наши правила преобразований URL записываются в небезызвестный файл .htaccess, который должен лежать в корне нашего сайта.
Для корректной работы mod_rewrite в нём обязательно должна быть написана следующая строка:
Далее подключаем наш модуль rewrite к конкретной папке, то есть к папке, в которой лежит наш .htaccess:
Имеем следующий файл .htaccess:
Правила и условия mod_rewrite
Все правила записываются с помощью команды RewriteRule, после которой ставится пробел и записывается шаблон ваших ЧПУ с помощью регулярных выражений, далее ставится ещё один пробел и указывается строка, в которую мы хотим преобразовать данный шаблон, где $1,$2,…$n – наши переменные. useful/([a-z]*) – это шаблон ожидаемого url,
а /index.php?category=useful&article=$1 – это то, во что мы его конвертируем, если пришедший URL подошёл под шаблон.
При этом $1 равен тому, что написано в круглых скобках, то есть $1 = [a-z]* Если бы круглые скобки встречались 2 раза, то у нас были бы переменная $1 и $2, если круглые скобки встречаются 3 раза, то переменные $1, $2, $3 и так далее. При этом переменные создаются в том же порядке, как идут круглые скобочки.
Понятно? – молодцы. Непонятно? — идёмте дальше, мы ещё к этому вернёмся. Также хочу обратить ваше внимание на то, что для лучшего понимания статьи, вы уже должны обладать начальными знаниями о PHP, а также о работе с методами GET и POST. Продолжаем.
Для того чтобы наш обработчик, то есть mod_rewrite не срабатывал каждый раз без надобности, мы в RewriteRule указываем шаблон, которому должны соответствовать приходящие URL. Если URL не соответствует шаблону, то mod_rewrite просто не сработает и не преобразует пришедший SEF URL в URL, с которым мы можем работать.
То есть на данном этапе вам важно понять саму суть: в ЧПУ ссылках не передаются параметры, а без параметров мы не можем ничего сделать в PHP с этой ссылкой, поэтому с помощью mod_rewrite мы преобразуем ЧПУ ссылку без параметров в не ЧПУ ссылку с параметрами. Что такое параметры? В примере выше имеем 2 параметра:
Параметр category и параметр article.
Опять-таки обращаю ваше внимание, что про параметры вы уже должны были знать, я лишь вкратце вам напомнил.
В шаблонах мы можем использовать символы и символьные классы. Символ точки обозначает абсолютно любой символ.
- . – любой одиночный символ
- [redf] – это класс символов. Обозначает наличие одного из перечисленных символов с учётом регистра.
внутри квадратных скобочек обозначает, что шаблон НЕ должен содержать данных символов.
- site|cite – обозначает альтернативу: подходит site или cite.
Квантификаторы или кванторы
Все предыдущие примеры обозначали один символ (одну единицу), а что если мы хотим показать, что символов из этого промежутка [a-zA-Z] может быть не один, а сколько угодно. Для этого мы должны использовать квантификаторы:
- ? — 0 или 1 символ из предшествующего текста (класса символов, символа и тд.)
- * — 0 или любое количество символов из предшествующего текста (n>0)
- + — 1 или любое количество символов из предшествующего текста (n>1)
- — ровно n символов, где n – конкретное число.
- — должно быть ровно 4 символа из предшествующего текста.
- — 4 или 5 символов
- — от нуля до 6 символов
- — от 4 до бесконечности символов
Примером может послужить наша уже известная строчка:
В которой мы применили квантификатор (квантор) звёздочку (*) после класса символов [a-z]. внутри квадратных скобок обозначает отрицание, не путайте!
Обратные связи в mod_rewrite
$n – это наша «переменная» в круглых скобках, о них мы уже говорили. Работает для RewriteRule.
%n – то же самое, только в RewriteCond. RewriteCond мы ещё не рассматривали, он у нас впереди.
Итак, если RewriteRule – это наши правила преобразования URL, то RewriteCond – это условие, аналог if в PHP. RewriteCond нужно в ситуациях, когда вам необходимо выполнить URL преобразование (RewriteRule) только при выполнении какого-то условия.
У сервера есть свои собственные переменные, которые мы можем использовать в наших условиях RewriteCond:
Синтаксис применения серверных переменных таков:
Давайте составим наше первое условие:
Если посетитель зашёл с браузера Mozilla Firefox, то выполняем следующее правило. Как видите, в отличие от PHP мы не используем фигурные скобки для обрамления нашего правила, которое выполнится, если условие TRUE.
RewriteCond позволяет использовать операторы сравнения: (больше), = (равно). Также есть специальные значения, например:
- -d (является ли каталогом)
- -f (является ли файлом)
- -s (является ли файлом с ненулевым размером)
- ! – отрицание.
Флаги
- nocase|NC – можно писать либо nocase, либо NC, это одно и то же, обозначает регистро-независмость. То есть мы можем больше не писать:
Вместо этого написать так:
forb > Если нужно поставить одновременно несколько флагов, ставим их через запятую, например:
Как вы уже могли догадаться, mod_rewrite можно использовать не только для ЧПУ, но и для многих других интересный целей, например, клоакинга – это метод чёрного SEO, когда по одному и тому же адресу посетителям отдаётся одна страница, а поисковым роботам совершенно другая. Ну и под конец статьи, я покажу вам живой пример использования всего написанного выше и как же это всё работает взаимодействуя с нашим PHP.
Живой пример использования mod_rewrite
Итак, вот какой вид имеет мой файл .htaccess:
Что происходит в этом ужасе? Для начала я проверяю, не набрал ли человек старой закалки мой адрес с www, если набрал, то перенаправляю его на тот же адрес, только без www. Зачем именно это нужно я напишу в одной из следующих статей, если коротко, то для SEO. После перенаправления с www на без www у нас заново считался наш файл .htaccess, поэтому всё начинается снова: проверяем, не пришёл ли нам УРЛ с www, в этот раз — нет. Далее (второй RewriteCond) мы проверяем, если наш УРЛ действительно без www, то делаем преобразования, а именно: заносим весь URL (без имени домена) в параметр article.
На этом работа .htaccess завершена и на сцену выходит PHP. Следующий код размещён в index.php:
О том, как работает конструкция switch, я подробно писал в статье по указанной ссылке. Вот и всё, дамы и господа! Наконец-то наша статья подошла к логическому завершению, и теперь вы сможете попрактиковать полученные знания. Я прощаюсь с вами до выхода новой статьи, а напоследок хочу привести интересную цитату:
«Несмотря на тонны примеров и документацию, mod_rewrite это Вуду. Чертовски клёвый Вуду, но все-таки Вуду.»
В большинстве современных CMS, где с помощью плагинов, а где и в самом ядре системы, реализована поддержка ЧПУ – человекопонятных адресов. Если вы посмотрите на адресную строку моего блога, то увидите что-то типа этого
А действительно, зачем это делать? Далеко не каждый человек вообще обращает внимание на адресную строку, тем более пытается там что-то разобрать. Дадим слово гуглу:
Структура URL сайта должна быть предельно простой. Попробуйте организовать контент так, чтобы URL имели логическую структуру и были понятны для человека (по возможности используйте слова, а не идентификаторы, состоящие из множества цифр). Например, при поиске информации об авиации URL типа http://ru.
wikipedia.org/wiki/aviacia поможет оценить релевантность ссылки. Гораздо сложнее привлечь внимание пользователей с помощью URL-адреса типа http://www.example.com/index.php? > То есть, применительно к нашему блогу разбиваем url на части:
- https:// — защищенный протокол передачи данных;
- upread.ru – домен, адрес блога;
- blog – раздел, показывающий, что это блог;
- notes – раздел, показывающий, что это заметки;
- chpu-s-pomoshhyu-php-dlya-chajnikov – название заметки, которую, собственного говоря, вы и читаете.
Как сделать?
Однако, если в КМС есть уже поддержка ЧПУ, транслитерация и другие инструменты, то, например, на моем блоге этого нет – у меня самописная CMS. Как же реализовано? Все просто, ниже покажу как.
Сначала небольшая ремарка. Если у вас есть какой-то опыт в сайтостроении, но вы не умеете делать ЧПУ с помощью .htaccess и php, то можете подумать, что я создал три каталога, а в них поместил файл index. html. Действительно, в принципе можно сделать каталоги blog, notes и nc-php и в последний положить индексный файл – и это будет работать! Но в реальности никто так не делает, все работают с .htaccess и php.
Итак, для начала нам надо переправить все запросы, которые не являются реальными файлами и каталогами в какой-то определенный файл, чаще всего это корень сайта, но никто вам не мешает создать и любой другой. Например, job.php. Добавьте в ваш .htaccess следующие строки:
Теперь нам надо работать уже с PHP. Я снова возьму в пример свой сайт. Каждый материал на моем блоге доступен по адресу upread/art.php? >
Однако правильнее будет создать в базе данных отдельное поле для ЧПУ каждой записи и сравнивать перед выводом. Кстати, именно так реализован вывод, к примеру, в одной из самых распространенных CMS – WordPress. На картинке видно, что ЧПУ записан в поле post_name, а тот, из которого берется id материала — guid.
После того, как вы создали ЧПУ на своем сайте, вы можете увидеть, что у вас слетели стили. Почему так происходит? Все просто: если прописаны относительные пути к стилям скриптам, то браузер и пытается их загрузить из текущей директории. А не находя, естественно, выдает ошибку 404. Решается проблема просто: добавляем тэг base. Например, для моего блога он выглядит таким образом:
Вот так просто может создать свой человекопонятный урл даже самый чайник в сайтостроении. Если вам что-то непонятно или необходимо настроить систему URL на вашем сайте, то пишите мне – за небольшое вознаграждение я вам помогу.
заметки, php, чпу, htaccess
Создательhtaccess — Dot Htaccesser
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Удобный способ изменить код ЧПУ при постобработке… любые кодировки
Вопросы : Удобный способ изменить код ЧПУ при сбое постпроцессора
422
Из-за безобразия PRIT-скрипта платной завышенной цены любой процессор — это anycodings_scripting, генерирующий код неправильным образом, и это anycodings_scripting, вырезанный из уже регулярных выражений в последней строке anycodings_scripting. Но нелогичное размещение магистрали высокого давления anycoding_scripting сохраняется. Что в конечном итоге приведет к тому, что anycodings_scripting окажется под высоким давлением, в то время как anycodings_scripting может быть остановлен с помощью переключателя.
М1 T0400 (SRIEG ER 0,36 QS-SMALR 1212 E3 HP-M) MB2 (ВКЛ.) MB13 (ВЫКЛ.)
М1 T0200 (35 л QS-SVJCR 1212 E11 HP-M) MB3 (ВКЛ.) MB12 (ВЫКЛ.)
Это два примера фрагментов, где последняя строка anycodings_scripting должна располагаться над верхней строкой anycodings_scripting.
MB13 (ВЫКЛ.) М1 T0400 (SRIEG ER 0,36 QS-SMALR 1212 E3 HP-M) MB2 (ВКЛ.)
MB12 (ВЫКЛ.) М1 T0200 (35 л QS-SVJCR 1212 E11 HP-M) MB3 (ВКЛ.)
Возможно, кто-то может показать пример или anycoding_scripting подскажет, какой софт для этого использовать.
Админы
TEXTSCRIPTINGEDITINGCNC
Всего ответов 1
31
Ответы 1 : of Удобный способ изменить код ЧПУ при сбое постпроцессораИспользование текстового редактора Kate
через ‘CTRL + R’
поиск и замена. 9(МБ)([1-9] \(ВЫКЛ\))$
Замена на:
\11\2
Мне помогло.
0
Ссылка для ответа
мРахман
Темы с самым высоким рейтингом
Преобразование перечисления Swift в класс
Оптимизация с использованием Scipy-HiGHS
Как преобразовать выходные данные Doxygen xml в уценку вместо reST (с помощью дыхания или MyST-Parser)
Код MCMC очень медленный даже для небольших шагов
Запустите программу из Python и продолжите работу после того, как скрипт будет уничтожен
Не удается подключить javascript к файлу pug в приложении Node Express
Сбой задачи воздушного потока Уведомления Slack
Jaspersoft Studio — не загружается повторно содержимое подотчета с сервера в предварительном просмотре
Re: перенаправление с перехватом исключений
Отключить ведение журнала фрагментов мультимедиа twilio
Ошибка проверки присутствия во вложенной сборке атрибутов объекта с объектом contains_to в Rails
Условная индексация в metricbeat с использованием конвейера узла Ingest создает поток данных
Перенаправление происходит в 302 со вторым вызовом ajax внутри вызова datatables
Свертывание выделенного текста
Получение «существующее соединение было принудительно закрыто удаленным хостом», когда страница загружается, но не при перезагрузке
Как сделать клавиши со стрелками при вводе чисел ленивыми в Vue?
Я пытаюсь написать код для своего ультразвукового детектора, и я выполняю его без ошибок, но он ничего не делает
Перенаправление ввода в test1 > тест2 < test3
Время конфликта php mysql
Каковы лучшие способы избежать использования вызовов методов в шаблонах Angular?
Массив переменной длины в ORTools
Oracle, поиск дубликатов в одном столбце на основе другого
Ошибка Alpine Expression: createFormComponent не определен
Как выделить TextView при нажатии на него так же, как при нажатии на кнопку
Изменение размера изображения IOS с помощью холста приводит к черному изображению
String. includes не находит подстроку
Как нормализовать тестовые и обучающие данные, так как они имеют разное количество строк
Как скрыть адрес электронной почты и пароль от тестов Cypress?
Добавление данных для дат между обновлениями?
Как изменить JQuery Image Cropper, чтобы область обрезки оставалась одинаковой для изображений с разными размерами?
$Эмитируйте объект в родительский компонент и поместите его в массив. Объекты в массиве продолжают быть реактивными, почему?
Java — преобразовать временную метку в дату и обратно в временную метку изменяет дату
Разрешение на инициализацию Git отклонено, если нет доступа к части пути
Как мы можем добавить фрагмент карты Google на изображение, нажатое с помощью камеры React Native в Android
Python: объединить неизвестное количество столбцов в pandas DataFrame
Как решить равенство, содержащее tanh
Попытка реализовать Navbar Material Design в React
Как изменить стиль шрифта комментариев Python в ячейках кода JupyterLab и редакторе кода?
Spring webtestclient сериализует даты в метки времени вместо дат
Что делает флаг `-o` в `ssh-keygen`?
Есть ли способ перенаправить зависимость Python на /usr/bin/env python?
React. useMemo перерисовывает все элементы в массиве
Как я могу использовать компонент formRegistry data в службе реестра
Как привязать функцию в vue js v-model?
Python xlrd Name Cell Value Selection
Изменение URL-адреса в сценарии bash
Проблема сервера OPC с загрузкой XML-страницы с помощью LoadPredefinedNodes
Как отключить кнопку просмотра в StaticDatePicker в React MUI v5.2.2?
Как заменить текст гиперссылкой HTML?
Матрица случайных чисел, но каждый столбец и строка в сумме дают одинаковую сумму
Настройка файлов конфигурации Apache и nignx: apache2.conf, .htaccess и nginx.conf основные параметры вашей работы. Начнем с Апача.
.htaccess и конфигурация Apache2
Основным файлом конфигурации является apache2.conf, который в Ubuntu хранится в папке /etc/apache2/.
Пример настроек в файле apache2.conf:
KeepAlive On #включение использования постоянного соединения между сервером и клиентом MaxKeepAliveRequests 100 # максимальное количество запросов в рамках одного подключения KeepAliveTimeout 30 #сколько секунд после последнего запроса сервер держит соединение Протоколы h3 h3c http/1.1 # Версии протоколов HTTP, для которых веб-сервер принимает запросы AccessFileName .htaccess #имя файла, позволяющего сделать дополнительные настройки Listen *:80 #прослушивание порта 80 по умолчанию
#если модуль ssl включен, то слушаем 443 порт Слушайте *:443
Индивидуальные настройки для каждого сайта лучше сделать уже в определенных папках внутри /etc/apache2/sites-available/site-folder/domain-name.conf.
Важно не забыть установить права доступа к папкам и файлам внутри каталога с сайтом. Папки — 755, файлы — 644.
Пример такого файла:
#первый блок перенаправит на https версию сайта с помощью настроек в файле.htaccess#номер порта, к которому применяются приведенные ниже настройки, 80 port = http имя_сервера site.ru #имя_домена DocumentRoot /var/www/site.ru/html #ссылка на папку, в которой хранится сайт <Каталог /var/www/site.ru/html> #доступ к настройкам папки, в которой хранится сайт Опционы Индексы FollowSymLinks MultiViews Разрешить переопределить все Порядок разрешить, запретить разрешить от всех ErrorLog ${APACHE_LOG_DIR}/error. log #ссылка на файл журнала ошибок
#номер порта, к которому применяются приведенные ниже настройки, 443 port = https Имя сервера site.ru ServerAdmin admin@site.ru #почта администратора SSLEngine о разрешении использования ssl-сертификата SSLCertificateFile "/root/site.crt" #путь к файлу сертификата SSLCertificateKeyFile "/root/site.key" #путь к файлу с ключом сертификата Корень документа /var/www/site.ru/html <Каталог /var/www/site.ru/html> Опционы Индексы FollowSymLinks MultiViews Разрешить переопределить все Порядок разрешить, запретить разрешить от всех Журнал ошибок ${APACHE_LOG_DIR}/error.log
И самый последний файл конфигурации по уровню (после включения возможности его использования) — .htaccess. Важно, что на виртуальном хостинге у вас не будет доступа к 2 файлам показанным выше.
Content.htaccess уже зависит от конкретных CMS/фреймворков. То есть одна и та же функция на WordPress и Modx не обязательно будет одинаково прописана в . htaccess.
Если упростить, то .вам может понадобиться htaccess для настройки всяких 9сайт\.ru [NC] Правило перезаписи (.*) https://site.ru/$1 [R=301,L]
Конфигурация nginx
Основным файлом конфигурации является nginx.conf, который в Ubuntu хранится в папке /etc/nginx/. Точно так же там хранятся основные настройки сразу для всех сайтов. А уже в папке /etc/nginx/sites-available/ хранятся настройки для конкретных сайтов.
пользовательских www-данных; #пользователь,который запускает веб-сервер рабочие_процессы авто; #количество процессов, можно задать вручную = количеству ядер процессора pid /run/nginx.pid; #id процесса веб-сервера включить /etc/nginx/modules-enabled/*.conf; #подключение модулей nginx # ниже стандартные настройки, аналогичные Apache События { worker_connections 768; мульти_принять; } http { отправить файл включен; tcp_nopush включен; tcp_nodelay включен; keepalive_timeout 30; типы_хэш_макс_размер 2048; map_hash_bucket_size 64; server_names_hash_bucket_size 64; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #подключить ssl ssl_prefer_server_iphers включен; журнал_доступа /var/log/nginx/access.log; # журнал_ошибок /var/log/nginx/журналы error.log; gzip включен; # включение сжатия gzip включить /etc/nginx/conf.d/*.conf; включить /etc/nginx/sites-enabled/*; #подключение файлов из внутренних папок для индивидуальной настройки }
И последний пример — файл конфигурации внутри папки /etc/nginx/sites-available/ для определенного сайта, где nginx выступает в роли обратного прокси для приложений nuxt.js.
#все разбито по портам и именам сайтов. То есть сервер слушает 80 и 443 и принимает адреса с www и без. #цель настройки сделать корректный редирект со всех минорных версий сайта на основную. server { #перенаправление с http://site.ru на https://site.ru слушать 80; имя_сервера site.ru; вернуть 301 https://site.ru$request_uri; } server { #перенаправление с http://www.site.ru на https://site.ru слушать 80; имя_сервера www.site.ru; вернуть 301 https://site./(.*)/$ /$1 навсегда; расположение / { истекает 31557600; #указываем период кеширования статических файлов в секундах proxy_redirect выкл.; proxy_set_header Хост $host; #set_header установить заголовки ответа сервера proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $схема; proxy_read_timeout 1 мин.; proxy_connect_timeout 1 мин.; proxy_pass http://localhost:3000 ; #путь с портом, на котором запущено приложение nuxt.js } } сервер { слушать 443 ssl; #перенаправить с https://www.site.ru на https://site.ru имя_сервера www.site.ru ; SSL включен; #без подключения ssl сертификата будет выдаваться ошибка ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_certificate /etc/ssl/certs/site.crt; ssl_certificate_key /etc/ssl/certs/site.key; ssl_prefer_server_ciphers включен; вернуть 301 https://site.ru$request_uri ; }
Это обзорная статья, в которой показан примерный принцип настройки веб-серверов .