Htaccess для сайта html: Файл .htaccess — настройка перенаправлений и управление конфигурацией веб-сервера

Содержание

Как настроить .htaccess файл для Сайта на чистом html? — Хабр Q&A

Привет Всем!
Как настроить .htaccess файл для Сайта на чистом html?
404- страницу?
Если возможно кэш для браузеров.

Я новичок в этом деле(, сильно не ругайте.

Есть вот такие настройки, но не чего не работает(((

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml

  # Remove browser bugs (only needed for really old browsers)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>


<IfModule mod_expires.c>
	ExpiresActive on

	ExpiresDefault "access plus 1 month"

	# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
	ExpiresByType text/cache-manifest "access plus 0 seconds"

	# html
	ExpiresByType text/html "access plus 0 seconds"

	# XML
	ExpiresByType text/xml "access plus 0 seconds"
	ExpiresByType application/xml "access plus 0 seconds"

	# RSS
	ExpiresByType application/rss+xml "access plus 1 hour"

	# Favicon
	ExpiresByType image/x-icon "access plus 1 week"

	# Картинки
	ExpiresByType image/gif "access plus 1 month"
	ExpiresByType image/png "access plus 1 month"
	ExpiresByType image/jpeg "access plus 1 month"
	ExpiresByType image/jpg "access plus 1 month"

	# HTC файлы  (например css3pie)
	ExpiresByType text/x-component "access plus 1 month"

	# Нестандартные шрифты сайта
	ExpiresByType application/x-font-ttf "access plus 1 month"
	ExpiresByType font/opentype "access plus 1 month"
	ExpiresByType application/x-font-woff "access plus 1 month"
	ExpiresByType image/svg+xml "access plus 1 month"
	ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

	# CSS и javascript
	ExpiresByType text/css "access plus 1 year"
	ExpiresByType application/javascript "access plus 1 year"

</IfModule>

# Cache-Control браузера 
<ifModule mod_headers.c>
	# 30 дней
	<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
	Header set Cache-Control "max-age=2592000, public"
	</filesMatch>
	# 30 дней
	<filesMatch ".(css|js)$">
	Header set Cache-Control "max-age=2592000, public"
	</filesMatch>
	# 2 дня
	<filesMatch ".(xml|txt)$">
	Header set Cache-Control "max-age=172800, public, must-revalidate"
	</filesMatch>
	# 1 день
	<filesMatch ".(html|htm|php)$">
	Header set Cache-Control "max-age=172800, private, must-revalidate"
	</filesMatch>
</ifModule>

<IfModule mod_setenvif.c>
	#Эта конструкция для говнобраузера
	#Запрет отдачи HTTP-заголовков Vary
	BrowserMatch "MSIE" force-no-vary
	BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary
</IfModule>




DirectoryIndex index.(\..*|Entries.*|Repository|Root|Tag|Template)$»>
Order allow,deny
</FilesMatch>

# Don’t show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Force simple error message for requests for non-existent favicon.ico.
<Files favicon.ico>
# There is no end quote below, for compatibility with Apache 1.3.
ErrorDocument 404 «The requested file favicon.ico was not found.
</Files>

# Set the default handler.
DirectoryIndex index.php index.html index.htm

# Override PHP settings that cannot be changed at runtime. See

# sites/default/default.settings.php and drupal_initialize_variables() in
# includes/bootstrap.inc for settings that can be changed at runtime.

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_flag magic_quotes_gpc off
php_flag magic_quotes_sybase off
php_flag register_globals off
php_flag session.auto_start off
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation off
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On

# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600

<FilesMatch \.php$>
# Do not allow PHP scripts to be cached unless they explicitly send cache
# headers themselves. Otherwise all scripts would have to overwrite the
# headers set by mod_expires if they want another caching behavior. This may
# fail if an error occurs early in the bootstrap process, and it may cause

# problems if a non-Drupal PHP file is installed in a subdirectory.
ExpiresActive Off
</FilesMatch>
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on

# Block access to «hidden» directories whose names begin with a period.(.*)\.js $1\.js\.gz [QSA]

# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule \.css\.gz$ — [T=text/css,E=no-gzip:1]
RewriteRule \.js\.gz$ — [T=text/javascript,E=no-gzip:1]

<FilesMatch «(\.js\.gz|\.css\.gz)$»>
# Serve correct encoding type.
Header append Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
</IfModule>

.htaccess - полезные примеры для сайта

В этой статье собраны полезные примеры кода в файле .htaccess для оптимизации сайта и реализации таких задач как блокирование доступа к файлу, защита паролем папки или сайта, бан по IP или сети, редиректы, gzip сжатие, кэширование и т.д и т.п.

.htaccess — файл дополнительной конфигурации веб-сервера Apache, и подобных серверов. Позволяет задавать большое количество параметров для работы веб-сервера в отдельных каталогах или по всему сайту в целом.(.*) https://it-world24.ru/$1 [L,R=301]

Включение HSTS

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

<IfModule mod_headers.c>
# this domain should only be contacted in HTTPS for the next 12 months
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
</IfModule>

Запрещаем отображать сайт в iframe

Может возникнуть ситуация когда какие-либо сайты начинают отображать контент вашего сайта во frame-блоках, цели могут быть разные: мошенничество, clickjacking, воровство вычислительных ресурсов (чтобы не нагружать свой сервер) или просто воровство контента. Защититься можно от этого при помощи вот такого кода в файле htaccess:

<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>

Если эта защита не сработает, значит модуль mod_headers на хостинге не включен.(.*)$ http://sait.ru/$1 [R=301,L]

301 редирект с одного домена на другой

Если сайт изменил свой домен и не хочется потерять вес страниц, то замените содержимое .htaccess (файл находится в корне папки старого домена), на следующее (вместо new-site.ua укажите новый домен):

<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://new-site.ua/$1 [R=301,L]

Увеличиваем количество выделяемой ОЗУ

Бывает можно встретить вот такую ошибку:

Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 72 bytes) in

Она говорит о том, что CMS не хватает выделенной под нее оперативной памяти.

Один из способов увеличения объема выделенной оперативной памяти - через файл .htaccess, пишем в нем:

php_value memory_limit 64M

Если не помогло, значит хостинг запретил изменять php параметры через htaccess

Включаем GZip сжатие

Вот такой код для файла htaccess рекомендует WordPress.Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>

Или почти такой же код рекомендует известный сайт gtmetrix.com:

<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font

AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml

# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>

Кэширование статического контента в браузере

Следующий пример для htaccess использует расширение mod_expires и включает кеширование всего контента кроме некоторых форматов файлов:

FileETag MTime Size
ExpiresActive On
ExpiresDefault "access plus 10 years"
<FilesMatch \.(html|xhtml|xml|shtml|phtml|php)$>
ExpiresActive Off
</FilesMatch>

Или наоборот кэшируем лишь определенные форматы:

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</filesmatch>
</ifmodule>

Вот еще пример кода:

ExpiresActive On
ExpiresDefault A0

# 1 YEAR
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
</FilesMatch>
# 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
ExpiresDefault A604800
</FilesMatch>
# 3 HOUR
<FilesMatch "\.(txt|xml|js|css)$">
ExpiresDefault A10800"
</FilesMatch>

Следующие директивы, как альтернатива предыдущему методу, используют расширение Apache под названием mod_header и регламентируют, как клиент будет хранить файлы в кэше, каждая директива говорит клиенту хранить типы файлов в течении разного интервала времени:

# 1 YEAR
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
# 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 3 HOUR
<FilesMatch "\.(txt|xml|js|css)$">
Header set Cache-Control "max-age=10800"
</FilesMatch>
# NEVER CACHE
<FilesMatch "\.(html|htm|php|cgi|pl)$">
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate"
</FilesMatch>

Если часть CSS и JS-файлов, изображений создаются динамически, например изображения предпросмотра и ряд стилей могут создаваться при помощи PHP на лету, то выручит вот такой код:

ExpiresActive On
ExpiresByType text/css A315360000

Закрываем индексацию через .(.*)(/)$ $1 [L,R=301]

Отключение вывода ошибок php

Если не скрывать вывод ошибок php, то сайт становится подтвержденным уязвимости "Full Path Disclosure", ее суть заключается в том, что благодаря ошибкам можно узнать полный путь к файлам вызывающим эти ошибки, то есть узнать структуру папок на хостинге, чтобы этого не было в htaccess можно отключить вывод php ошибок:

php_flag display_errors off

если же это вызвало ошибку "internal server error", то удалить эту строку и отключить вывод ошибок в файле "php.ini" при помощи строки:

display_errors = 'off'

Или отключите в админке хостинга, например на моем Хостинг Украина это отключается через админку.

Стандартный .htaccess - студия Клондайк

Для единообразия формирования URL страниц сайтов, и предотвращения появлений дубликатов страниц, вводится стандартная часть файла .htaccess.

Данный конфиг позволяет решить следующие задачи:

  • Активация канонических директив
  • Активация рекомендованных директив "Битрикс монитор качества"
  • Установить основное зеркало сайта с www  сохраняя протокол  http или https
  • Установка основного зеркала сайта без www сохраняя http или https
  • Перенаправление HTTP > HTTPS 
  • Перенаправление HTTPS > HTTP
  • Удалить любое количество "/" стоящих рядом; site.ru////catalog//item  > site.ru/catalog/item
  • Удалять "/" в конце URL если это файл
  • Добавлять "/" в конце URL если его там нет и это не файл. (работает в связке с вышестоящим, иногда требуется одно, иногда другое)
  • Удалить из URL index.php
  • Компрессия статического контента для GooglePagespeed тест
  • Добавлен AddType svg

Последовательность установки:

  1. Вставить код в начале .htaccess
  2. При вставке требуется указать правильное зеркало сайта, раскоментировав нужное, по умолчанию удаляет WWW, и включает HTTPS
  3. Удалить старый redirect перенаправление на основное зеркало.
  4. Если основное зеркало сайт HTTPS, то внесите протокол в robots.txt Host: https://site.ru, для http не требуется.
  5. Убедитесь что SSL сертификат выпущен и для зеркала www, в противном случае редирект не сработает
  6. При установке HTTPS основным зеркалом, перейти на свой сайт и убедиться в отсутствие blocked:mixed

Полезные сервисы

Код конфигурационного файла каталога .htaccess.

############################################################################
#### Стандартный .htaccess для проектов студии Клондайк, версия 4.6     ####
############################################################################
RewriteEngine On
   #  Директива включает редиректы.
RewriteBase / 
   # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
Options +FollowSymLinks
   # Разрешает переход по символическим ссылкам.
php_flag display_errors off
  # запретить отображение ошибок  (требование монитора качества)
php_flag allow_url_fopen off
  # запретить  использовать удаленные файлы (требование проактивной защиты)

############################################################################
#### Выбор основного зеркала (с www или без www)                        ####
############################################################################
    # 1. Удалить www
RewriteCond %{ENV:HTTPS} on
    #Если включен https
RewriteRule .(.*)$ %1/ [R=301,L]
   # Удалить index.php из URL.

############################################################################
#### Убираем повторяющиеся слеши (/) в URL                              ####
############################################################################
RewriteCond %{THE_REQUEST} //
   # Проверяем, повторяется ли слеш (//) более двух раз.
RewriteCond %{QUERY_STRING} !http(s|)://
  # Убедимся что это не урл в  GET
RewriteRule .* /$0 [R=301,L]
   # Исключаем все лишние слеши.

############################################################################
#### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
   # Если файл содержит точку.
RewriteCond %{REQUEST_FILENAME} !-d
   # И это не директория.
RewriteCond %{REQUEST_FILENAME} -f
   # Является файлом.(.*)$ $1/ [L,R=301]
   # Добавляем слеш в конце.


############################################################################
#### Компрессия статического контента для гугл  спид тест               ####
############################################################################
<IfModule mod_deflate.c>
  AddType image/svg+xml .svg
  AddOutputFilterByType DEFLATE image/svg+xml  
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/svg "access plus 1 year"
  ExpiresByType image/gif "access plus 1 year"
  ExpiresByType image/png "access plus 1 year"
  ExpiresByType text/javascript "access plus 1 year"
  ExpiresByType text/css "access plus 1 year"
  ExpiresByType application/javascript "access plus 1 year"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
  ExpiresByType application/x-font-ttf "access plus 1 year"
  ExpiresByType application/x-font-opentype "access plus 1 year"
  ExpiresByType application/x-font-woff "access plus 1 year"
  ExpiresByType image/svg+xml "access plus 1 year"
</IfModule>
  <IfModule mod_headers.c>
  <filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$">
    Header set Cache-Control "max-age=31536000, public"
  </filesmatch>
  <filesmatch "\.(html|htm)$">
    Header set Cache-Control "max-age=7200, private, must-revalidate"
  </filesmatch>
  <filesmatch "\.(pdf)$">
    Header set Cache-Control "max-age=86400, public"
  </filesmatch>
  <filesmatch "\.(js|otf|ttf|woff|woff2)$">
    Header set Cache-Control "max-age=31536000, private"
  </filesmatch>
  </IfModule>
############################################################################
#### Конец общей части, далее следует собственные директивы .htaccess   ####
############################################################################

Если есть проблема с зацикливанием https

В случае работы nginx+apache возможен циклический  редирект HTTP>HTTPS вызваны неправильными настройками сервера (не файла), Используя на backand http вместо https и по какой-то причине не могут передать протокол обращения от nginx в apache. В таком случае нужно  отключить редирект на https и исправить ошибку или в веб сервере или подобрать подходящее  условие, как правило подойдет:

 RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} !on
RewriteRule (.(.*)index\.htm$ https://%{HTTP_HOST}/$1 [R=301,L]

############################################################################
#### Компрессия статического контента для гугл  спид тест               ####
############################################################################
<IfModule mod_deflate.c>
  AddType image/svg+xml .svg
  AddOutputFilterByType DEFLATE image/svg+xml  
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/svg "access plus 1 year"
  ExpiresByType image/gif "access plus 1 year"
  ExpiresByType image/png "access plus 1 year"
  ExpiresByType text/javascript "access plus 1 year"
  ExpiresByType text/css "access plus 1 year"
  ExpiresByType application/javascript "access plus 1 year"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
  ExpiresByType application/x-font-ttf "access plus 1 year"
  ExpiresByType application/x-font-opentype "access plus 1 year"
  ExpiresByType application/x-font-woff "access plus 1 year"
  ExpiresByType image/svg+xml "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
  <filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$">
    Header set Cache-Control "max-age=31536000, public"
  </filesmatch>
  <filesmatch "\.(html|htm)$">
    Header set Cache-Control "max-age=7200, private, must-revalidate"
  </filesmatch>
  <filesmatch "\.(pdf)$">
    Header set Cache-Control "max-age=86400, public"
  </filesmatch>
  <filesmatch "\.(js|otf|ttf|woff|woff2)$">
    Header set Cache-Control "max-age=31536000, private"
  </filesmatch>
</IfModule>
############################################################################
#### Конец общей части, далее следует собственные директивы .htaccess   ####
############################################################################

Для создания редиректов старых URL на новые, воспользуетесь стандартом по собору редиректов. Убедиться что все ссылки одают ответ 301.

.htaccess для новичков

  • Главная
  • ->
  • Материалы
  • ->
  • .htaccess для новичков

Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс "Практика HTML5 и CSS3"

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный курс "Сайт на WordPress"

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

*Наведите курсор мыши для приостановки прокрутки.

Назад Вперед


.htaccess для новичков

Файлы .htaccess используются для настройки веб-серверов (в основном речь идет об Apache, но не только). Несмотря на "странное" расширение файла, это обычный текстовый файл, который можно отредактировать в любом текстовом редакторе.

В данном материале мы рассмотрим основные моменты, которые помогут Вам при разработке своих проектов.

Для того, чтобы работать с файлами .htaccess локально и иметь возможность тестировать их, Вы можете использовать набор "Денвер", после установки которого получите на своем компьютере мини-сервер с установленными и настроенными Apache, PHP и MySQL.

Файлы .htaccess имеют такой же формат, как и главный конфигурационный файл Apache - httpd.conf. Многие из настроек httpd.conf можно задать с помощью .htaccess, и наоборот.

"Настройки, заданные в .htaccess, перезапишут одноименные настройки из главного конфигурационного файла для той директории, в которой располагается данный файл .htaccess" (включая поддиректории)."

Иногда еще файлы .htaccess называют файлами динамической конфигурации, поскольку они считываются сервером при каждом запросе к директории, в которой они содержатся.

Это означает, что изменения, внесенные в .htaccess, вступают в силу немедленно, не требуя перезагрузки сервера (в отличие от настроек, заданных в главном конфигурационном файле - httpd.conf). Также это значит, что мы немного теряем в производительности, однако такое решение очень полезно, когда у нас нет доступа к главному файлу настроек сервера.

Теперь мы имеем общее представление о файлах ./]+ означает, что в указанном месте могут находиться любые символы кроме прямого слэша 1 или более раз. По сути, таким шаблоном регулярного выражения мы охватываем три части URL-адреса: turntables, technics и sl1210

На практике переписывание URL-адресов может быть (и обычно бывает) более сложным и позволяет достичь интересных результатов. В рамках данной статьи мы не будем рассматривать этот момент глубже.

Задание произвольных страниц ошибок

Показывать людям страницы ошибок, заданные "по умолчанию", уже не здорово. Многие сайты используют возможности, предлагаемые файлом .htaccess для того, чтобы превратить страницы ошибок на сайте в нечто юмористическое и поднимающее пользователю настроение. И это правильно.

Как минимум имеет смысл настроить страницы ошибок так, чтобы они не выбивались из общего дизайна сайта. Давайте рассмотрим это на простом примере:



ErrorDocument 404 "/404.html"


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

Аналогичным образом мы можем настроить отображение своих произвольных страниц и для других ошибок сервера (403, 500 и т.п.)

Ограничение доступа к определенным ресурсам

Используя .htaccess мы можем защитить паролем доступ к любому файлу или директории по отношению ко всем пользователям, либо на основании их IP-адреса или домена. Это, кстати, одна из наиболее распространенных областей применения .htaccess.

Чтобы предотвратить доступ ко всей папке, мы должны написать такой код:



AuthName "Username and password required"
AuthUserFile /path/to/.htpasswd
Require valid-user
AuthType Basic


Файл .htaccess с таким кодом нужно сохранить в той папке, доступ к которой мы хотим ограничить.

Директива AuthName определяет текст сообщения, которое будет отображаться в диалоговом окне.

Директива AuthUserFile указывает путь до файла .htpasswd (файл, содержащий пароли для доступа к ресурсу).

Директива Require говорит о том, что только пользователь, прошедший авторизацию, может получить доступ к информации.

Такой тип авторизации (AuthType) имеет название базовой (Basic) авторизации.

Для того, чтобы защитить конкретный файл, мы можем "обернуть" код выше в директиву <files>, которая указывает на защищенный файл:



<Files "protectedfile.html">
   AuthName "Username and password required"
   AuthUserFile /path/to/.htpasswd
   Require valid-user
    AuthType Basic
</Files>


Для таких типов авторизации нам нужен файл .htpasswd, в котором содержится список разделенных двоеточием пар "пользователь:зашифрованный пароль". Т.е. этот файл содержит всех пользователей и их пароли, необходимые для получения доступа к ресурсу.

Важно, что этот файл должен быть сохранен в директории, к которой невозможно получить доступ через URL-адрес.

Запретить доступ для определенных лиц

Еще одно применение файла .htaccess - легко и быстро заблокировать все запросы с определенного IP-адреса или от определенного клиента (обычно браузера). Для того, чтобы заблокировать определенный IP-адрес, просто добавьте следующие директивы в .htaccess:



order allow,deny
deny from 192.168.0.1
allow from all


Директива order сообщает Apache в каком порядке обрабатывать директивы allow/deny (разрешить/запретить).

В примере выше сначала будет выполняться директива allow, потом - deny.

Обратите внимание, что директива allow будет выполняться первой (даже если она идет после deny), и все IP будут разрешены.(.*)$ http://%{REMOTE_ADDR}/$ [r=301,l]

В этом примере любой клиент, у которого строка HTTP_USER_AGENT начинается с "OrangeSpider" (некий зловредный бот) переадресовывается обратно на адрес, с которого он "пришел".

Регулярное выражение соответствует любому одиночному символу (.), повторенному ноль или более раз (*) и перенаправляет по адресу, содержащемуся в переменной окружения (среды) %{REMOTE_ADDR}. Флаг 1 инструктирует Apache о том, что с этим правилом нужно обращаться как с последним, т.е. он не будет обрабатывать другие правила, пока не выполнит переписывание URL.

Реализация кэширования

Кэширование несложно настроить, и оно способствует более быстрой работе сайта. Установив "срок годности" для элементов сайта, которые редко изменяются, где-то в далеком будущем, мы получаем следующее преимущество: мы предотвращаем лишние повторные обращения браузера к серверу, повышая скорость отклика и работы сайта в целом:



ExpiresActive on
ExpiresByType image/gif                 "access plus 1 month"
ExpiresByType image/png                 "access plus 1 month"
ExpiresByType image/jpg                 "access plus 1 month"
ExpiresByType image/jpeg                "access plus 1 month"
ExpiresByType video/ogg                 "access plus 1 month"
ExpiresByType audio/ogg                 "access plus 1 month"
ExpiresByType video/mp4                 "access plus 1 month"
ExpiresByType video/webm                "access plus 1 month"


Вы можете добавлять различные директивы для ExpiresByType для контроля кэшируемых элементов. Первая директива ExpiresActive on просто гарантирует нам, что включен специальный модуль, который осуществляет гененрирование загловков со "сроком годности".

Выполнение данных директив зависит от того, установлен ли на Apache соответствующий модуль - mod_expires.

Включение сжатия

Еще один момент, влияющий на скорость работы приложения - сжатие контента. Реализовать его можно подобным образом:



FilterDeclare   COMPRESS
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/css
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/javascript
FilterChain     COMPRESS
FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no


Такая схема сжатия работает на версиях Apache от 2.1 и выше, использующих модуль mod_filter.

Здесь используется алгоритм DEFLATE для сжатия контента на основании загловков content-type. В нашем случае мы указали text/html, text/css и $text/javascript.

В примере выше с помощью директивы FilterDeclare мы объявляем фильтр, который хотим использовать (COMPRESS). Затем перечисляем типы контента, которые должен обработать этот фильтр.

Директива FilterChain инструктирует сервер о том, что нужно построить цепочку фильтров на основании директив FilterProvider, которые перечилсены чуть выше.

Директива FilterProtocol позволяет нам указать настройки, которые применяются к цепочке фильтров во время их (фильтров) работы. Мы используем настройки change=yes (контент может быть изменен фильтром, в нашем случае он может быть сжат) и byteranges=no (фильтр должен применяться только к целым файлам).

В более ранних версиях Apache для конфигурирования DEFLATE сжатия используется модуль mod_deflate. В этом случае у нас меньше контроля над фильтрацией контента, но и директивы проще:



SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/javascript


В этом случае мы просто устанавливаем алгоритм компрессии, используя директиву SetOutputFilter и следующей строкой указываем типы контента, которые мы желаем сжать с помощью директивы AddOutputFilterByType.

Как правило, Ваш веб-сервер будет использовать один из этих модулей в зависимости от того, какая версия Apache на нем установлена.

Скорее всего, Вы будете знать это заранее, но если Вы создаете общий .htaccess файл, который будет использоваться на ряде сайтов (и Вы не сможете знать об установленных модулях заранее), имеет смысл использовать оба блока кода выше, заключенных в директиву <IfModule module_name>. Это позволит использоваться нужному модулю не приводя к ошибке 500 при попытке настраивать и использовать несуществующий модуль.

Заключение

Мы рассмотрели некоторые из наиболее частых применений файла .htaccess. Как и в случае с любым обзорным материалом, моменты, которые мы затронули, представлены лишь как введения в более узкие темы. Существует еще множество других настроек, которые мы не рассмотрели, поэтому при необходимости Вы можете изучить эти темы более детально.

Источник: http://net.tutsplus.com
Перевод: Дмитрий Науменко

P.S. Обратите внимание на премиум-уроки по различным аспектам сайтостроения, включая программирование на PHP, а также на бесплатный курс по созданию своей CMS-системы на PHP с нуля. Все это поможет вам быстрее и проще освоить этот мощный язык веб-разработки:

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!


Смотрите также:

Наверх

топ-10 лайфхаков для начинающего вебмастера

Не все знают, что файл htaccess способен улучшить работу сайта: опытные веб-мастера используют его для настройки, оптимизации под мобильный трафик, кастомизации ресурса. В этой статье расскажу, как настроить htaccess, чтобы получить больше трафика, и поделюсь собственным лайфхаками касательно настройки этого файла.

Что такое htaccess

Htaccess (сокращенно от hypertext access (гипертекстовый доступ) – это специальный файл, расположенный в корневом каталоге. Корневой каталог – это главная папка, в которой хранятся все папки или файлы сайта. Обычно корневой каталог называется public_html. Файл htaccess позволяет получить доступ к настройкам apache-сервера. Но про них чуть позже.

Прежде, чем мы будем менять содержимое файла, нужно создать его копию. Рандомное изменение htaccess может привести к потере позиций сайта в поисковых системах. Поэтому лучше иметь копию, если решите все откатить назад.

В некоторых CMS htaccess может быть «спящим» – в этом случае он называется htaccess.txt. В таком виде сервер его не читает, никакие изменения в нем не будут восприниматься.

Зачем нужен htaccess

Главное назначение htaccess – это кастомизированная настройка сервера, которая может понадобиться оптимизатору.

Случаи, когда без настройки htaccess не обойтись:

  • Запретить доступ к определенной странице / папке / файлу / директории.
  • Сделать редирект, например, с www.texterra.ru на https://texterra.ru.
  • Настроить поведение браузера в случае возникновения ошибок. Например, ошибки «404».
  • Настроить доступ к конфиг-файлу apache.conf – это случай, когда мы, например, используем виртуальный хостинг. Называться этот файл может по-разному, но чаще всего – .httpd.conf)
  • Изменить скорость загрузки.

Кроме этого, без htaccess не обойтись, когда вебмастер работает с виртуальным хостингом.

Где найти

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

Как редактировать

Редактировать файл htaccess можно несколькими способами. Чаще всего я использую встроенный файловый менеджер, который есть у хостинга. Например, я пользуюсь хостингом Beget, и доступ к файлу htaccess через него можно получить практически в 2 клика.

Открываем «Файловый менеджер» Beget:

Используем поиск по сайту:

Многие современные CMS позволяют редактировать htaccess через панель администратора. Например, в «Битриксе» для этих целей достаточно открыть пункт «Контент» и затем выбрать раздел «Файлы и папки». Теперь просто выбираем htaccess.

Если ваш сайт на WordPress (или любой другой популярной CMS), то изменять htaccess можно, установив любой подходящий плагин. Для этого открываем административную панель вашей CMS и в разделе «Плагины» вбиваем в поиск слово htaccess.

На WordPress выглядит это выглядит так:

У меня есть сайт на WordPress, и, чтобы изменять htaccess, я использую плагин WP Htaccess Editor:

Изменять htaccess можно также с помощью крупных SEO-комбайнов. Например, All in One SEO Pack:

Аналогичная возможность предоставлена и в популярном Yoast SEO:

Какую CMS лучше выбрать для интернет-магазина

Как читать и понимать htaccess

Даже если вы никогда не пишете код, понять принцип синтаксиса htaccess не составит труда. Главные правила:

  • Новая команда – с новой строки.
  • Если вы хотите добавить комментарий для людей или заметку для себя, то пишите его после символа #.
  • Правила вводятся путем создания регулярных выражений.

С первыми двумя пунктами все просто, но с третьим нужно чуть разобраться. Регулярные выражения – это специализированный язык, который используется для описания шаблонов строк. Основан язык регулярных выражений на метасимволах и масках-шаблонах. Углубляться не будем, но отметим, что создание регулярных выражений требует знания переменных и других специальных символов. Их не так много, выучить их не составит труда. Самые часто используемые:

Как делать редиректы через htaccess

Настройка редиректов – самый частый случай редактирования htaccess. Прежде чем делать перенаправление, следует точно убедиться, что оно необходимо. Вообще, поисковики не любят сайты, состоящие целиком из редиректов и нещадно пессимизируют их, урезая позиции. Поэтому не злоупотребляете редиректами.

Правила настройки 301-го редиректа через htaccess:

  1. Не делать более двух последовательных редиректов. Сразу несколько редиректов значительно увеличивают статическую нагрузку на хостинг и в целом снижают скорость загрузки веб-ресурса.
  2. Делать перенаправление лучше по принципу «от малого к большему». Например, сперва делаем перенаправление посетителя со страницы А на страницу Б, а уже после этого формируем главный редирект, например, на страницу без слэша*.

*Речь о страницах, которые оканчиваются знаком «/». Например – www.texterra.ru/blog/ и www.texterra.ru/blog

В каких случаях нужно делать 301-ый редирект через редактирование htaccess

Делать перенаправление посетителя через 301-ый особенно актуально в случаях, когда:

  • Изменилась вложенность страницы.
  • Содержимое страницы или вся страница были удалены.
  • Изменился URL-адрес страницы.

Если мы просто удалим страницу, она начнет выдавать ошибку 404, что плохо для позиций сайта в поиске. Думаю, объяснять не надо – пустая страница не интересна для поисковиков. Гораздо разумнее не удалять страницу, а сделать грамотное перенаправление на другую, релевантную удаленной. Чтобы сделать 301-ый редирект, достаточно указать директиву перенаправления. Выглядит она вот так:

Redirect 301 /page1/ https://texterra.ru/page2/

Разберем строку подробнее:

  • /page1/ – корневой URL. URL не должен включать протокол шифрования/имя домена.
  • https://texterra.ru/page2/ – на этот URL и настраивается редирект.

Удаляем страницы с одинаковым содержанием

Дубли – это страницы, содержимое которых повторяется. Если сайт обрастает неконтролируемыми дублями, то вскоре появляются следующие проблемы:

  • Некорректное определение наиболее релевантной страницы краулерами (краулер – поисковый робот, который обходит страницы всех сайтов в интернете, чтобы последние появлялись в результатах поиска).
  • Пессимизация сайта со стороны Google и «Яндекса».
  • Технические проблемы при составлении отчетов и при выполнении других операций.
  • Увеличение времени обхода страниц сайта.

Чтобы каждая страница сайта была доступна исключительно по единому URL, необходимо настроить главное зеркало и редиректы. Последние настраиваются на URL со знаком слэша на конце и на страницы со знаком слэша в начале URL. Если забыли: www.texterra.ru/blog/ и www.texterra.ru/blog.

Для настройки всего вышеперечисленного будем использовать модуль mod_rewrit. Выглядит он так: RewriteEngine On.

Делаем редирект на URL со слешем и на страницы без слеша

Здесь нет общих правил и законов – изучайте статистику по сайту, смотрите, какие именно страницы в индексе превалируют. После анализа статистики будем создавать соответствующие перенаправления. Стоит лишь отметить, что для новых сайтов принято делать редирект именно с поправкой на слэш. Другими словами, вариант www.texterra.ru/blog/ предпочтительнее, чем www.texterra.ru/blog.

Проверить переадресацию просто – достаточно выбрать любую интересующую страницу и добавить в конец URL знак слэша. Если страница загрузилась именно в том виде, в каком вы ее ввели, то это дубль. От всех таких страниц нужно избавляться. Если же страница загрузилась с подменой URL, то делать ничего не нужно, все настроено правильно.

Так я настраиваю 301-ый редирект на слеш:

И так, если нужно настроить 301-ый без слеша:

Как настроить главное зеркало при помощи htaccess

Сперва определяем главный URL, по которому будет открываться ваш сайт. Учтите, что для поисковых роботов Google и «Яндекса» https://texterra.ru, http://texterra.ru и www.texterra.ruэто абсолютно разные сайты. Доменные имена же все различаются! Так что выбрать главное зеркало, в любом случае, придется.

Если хотите переехать на SSL-протокол, то сейчас самое время. Учтите, что после переезда позиции сайта могут просесть. Можно найти бесплатный SSL-сертификат – достаточно будет просто скачать его и установить на сайт. Кроме этого нужно будет добавить соответствующее правило-поправку в наш htaccess. Новая версия сайта также прописывается и в файл robots. При переезде на SSL существует довольно много подводных камней, которые приводят к появлению ошибок, но это уже отдельная тема. Если будет интересно я расскажу о ней в новом материале. Пока же вернемся к главному зеркалу.

Как сделать HTTPS-редирект при помощи htaccess

Чтобы сделать перенаправление на HTTPS-версию сайта, нужно использовать следующий код:

Помочь поисковым роботам правильно определять главное зеркало можно, добавив все версии сайта в Google Search Console и «Яндекс.Вебмастер». Останавливаться на этом не буду, так как существует много инструкций на других сайтах.

В зависимости от выбранного главного зеркала использую одну из 2-х директив:

Как сделать редирект на другой домен при помощи htaccess

Редирект на другой домен может понадобиться, когда ваш сайт переезжает на новый домен. Помимо этого, есть и другие случаи. Еще редиректы на другой домен делают черные оптимизаторы, которые используют так называемые дропнутые домены для переадресации трафика, поисковых ботов, подмены ссылочной массы.

Для создания перенаправления через htaccess впишите в htaccess следующий код:

Естественно, «texterra1» нужно заменить на ваш собственный старый домен, а «texterra2» – на тот домен, на который нужно перенаправить посетителей.

Как отслеживать на сайте вообще все: гайд по Google Tag Manager для продвинутых

Защита контента и безопасность

Htaccess можно использовать, чтобы запретить доступ к особым разделам / страницам / файлам сайта. Кроме этого, htaccess применяется, чтобы запретить загрузку фотографии, ограничить нагрузку от нежелательных поисковых ботов.

Как ограничить скачивание фотографий с сайта при помощи htaccess

Одно время картинки с моего сайта воровал нехороший блог. Интересное заключалось в том, что картинки скачивались не только вручную, но и в автоматическом режиме при помощи хотлинков (если говорить простым языком, это просто прямые ссылки на картинки). Благодаря htaccess можно запретить загрузку фотографий с сайта, достаточно добавить файл следующий код:

Не забывайте: «texterra.ru» нужно поменять на полный URL вашего сайта. Также создаем картинку в любом графическом редакторе – на ней нужно будет разместить текст, который напомнит злоумышленнику о юридической ответственности за нарушение авторского права. Созданную картинку загружаем на сайт по следующему пути: https://texterra.ru/img/goaway.gif (но это в моем случае, у вас может быть другой, и не забудьте проверить путь в директиве выше).

Закрываем сайт от нежелательных IP

При помощи htaccess можно запретить доступ к сайту как отдельному ip-адресу, так и целым подсетямым. На своих сайтах я также запретил ботов, которые создают нагрузку на хостинг.

Чтобы запретить вредных ботов, я включил в htaccess следующие директивы:

Естественно, ваш список юзер-агентов может быть другим. В него можно внести всех ботов, которые создают высокую нагрузку на хостинг. Посмотреть статистику по запросам вы можете, обратившись в поддержку своего хостинг-провайдера.

Заблокировать можно даже роботов Google и «Яндекса». Например, запретить обход сайта роботу Google можно при помощи такой директивы:

Как разрешить доступ к сайту только определенным IP

Чтобы закрыть сайт для всех IP, кроме определенных, используем эту директиву:

Логика следующая.

Deny from all – ограничить доступ ото всех (имеется в виду от всех IP).

Allow from – разрешить доступ от всех: сюда вписываем IP-адреса, которым разрешен доступ к сайту. Для этого просто заменяем IP1, IP2 на разрешенные IP-адреса.

Как разрешить доступ к сайту только выбранным IP

Способ аналогичный предыдущему, просто используем такую директиву:

Вместо IP1 вписываем IP, которые могут просматривать сайт.

Как запретить доступ к сайту для определенной подсети

Для запрета доступа к сайту какой-либо подсети или подсетей используем такую директиву:

Нужную маску подставляем сразу после deny from. Вычислить IP, с которых отправляется спам, несложно – залогиниваемся в админку CMS и открываем раздел «Комментарии». Например, на WordPress IP отображается сразу после ника комментатора:

Кроме этого идентифицировать спамных товарищей можно, изучив серверные логи.

Как запретить доступ к выбранному файлу через htaccess

Для запрета доступа к файлу добавляем в htaccess следующую директиву:

Заменяем texterra на имя файла, доступ к которому необходимо ограничить. Теперь при открытии такого файла посетитель увидит 403-ю ошибку.

Как ограничить доступ к htaccess-файлу и базе данных сайта

Чтобы запретить доступ к нашему htaccess-файлу, прописываем следующую директиву:

Если ваш сайт работает на WordPress, я рекомендую закрыть доступ и к базам данных. Для этого прописываем такую директиву:

Если вы не хотите, чтобы на ваш сайт переходили с какого-то определенного веб-ресурса, нужно использовать такую директиву:

Естественно, block заменяем на URL нежелательного сайта.

Как запаролить файл / папку на сайте

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

Первым делом создаем текстовой файл в корне и называем его .htpasswd. В этом файле необходимо указать пары логин / пароль. При прописывании пары обязательно соблюдаем такой синтаксис user:password

Когда файл с логинами / паролями сформирован, вносим следующие директивы в htaccess:

Так мы защитили паролем выбранный файл. Если нужно запаролить папку, а не файл, то вписываем в htaccess такую директиву:

Внимание! Строку «/pub/home/.htpasswd» нужно заменить на ваш собственный путь до .htpasswd.

Как ограничить скрипты через htaccess

Для защиты своего сайта от вредных скриптов рекомендую прописать следующие директивы:

С ними сайт будет отдавать 403-ю всем, кто пытается его хакнуть.

Htaccess против DOS-атак

Чтобы бороться с DOS-атаками, достаточно уменьшить максимальный размер запроса. Указывается он в байтах. Например, нам нужно установить максимальный размер запроса в 10 Мбайт. Соответственно, указываем следующую директиву:

Гайд: как привлечь трафик в блог и правильно его монетизировать

Внешний вид сайта и htaccess

Если требуется заменить индексный файл (тот, который открывается по умолчанию при обращении к определенному каталогу), просто вписываем директиву в htaccess:

Соответственно, строку «anotherindex.html» нужно заменить на ваш собственный файл.

Как добавить или убрать расширение файла в конце URL (html или php)

Если хотите, чтобы во всех URL отображалось расширение html, используйте следующую директиву:

Как убрать расширение .html из всех URL

Чтобы удалить убрать окончание URL .html, необходимо добавив эту директиву:

Настраиваем кодировку

Несмотря на то, что мы живем в 2020 году, ошибки с отображением текста все еще встречаются. Они связаны с некорректным определением кодировки сайта браузером. Чтобы предупредить браузер о том, что ваш сайт использует именно Windows-1250, а не UTF-8, например, нужно внести некоторые изменения в htaccess.

Иногда кодировка прописывается в мете (причем для каждой страницы). Если возникают проблемы с отображением сайта, нужно использовать следующую директиву:

Вместо WINDOWS-1251 укажите вашу кодировку.

Чтобы все файлы, которые вы загружаете на свой сайт, имели идентичную кодировку, нужно указать ее при помощи такой директивы:

Две вышеуказанных директивы должны иметь идентичную кодировку.

Как сделать красивую 404-страницу

Наверняка вы не раз попадали на несуществующую страницу сайта, которая сообщает о 404-ой ошибке. Ощущение пустоты и потери – вот как можно описать впечатление от наблюдения такой страницы:)

Чтобы не потерять посетителя и грамотно перенаправить его на другие страницы сайта, можно сделать кастомную 404-ю. Просто создаем новую папку в корне сайта и называем её любым удобным именем. Теперь создаем html-страницу для 404-ой ошибки и копируем её в созданную папку. Осталось отредактировать htaccess, внеся в файл такую директиву

Аналогичным образом можно создать кастомные страницы для 401-ой, 403-й и 500-ой ошибок.

Гайд по AppSheet: создаем мобильную CRM для работы с Excel

Ускорение сайта при помощи дополнительных директив htaccess

Ускорить время загрузки сайта можно, используя директивы сжатия. Htaccess позволяет сжимать файлы при помощи mod_gzip, а также – с помощтю модуля mod_deflate. Первый позволяет тонко настраивать маски. Второй практически ничем ему не уступает и используется для задания расширений, которые нуждаются в оптимизации.

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

Чтобы настроить сжатие текста, картинок, CSS, Java Script и других компонентов страницы при помощи gzip, внесите следующую директиву в htaccess:

Напомню, mod_deflate позволяет указать все типы файлов, которые будут подвергаться сжатию. Добавив вышеуказанные директивы мы задали сжатие html-текста, «обычного» текста, XML, CSS, Java Script.

Ускорение сайта при помощи кэш-копий

Кэширование можно активировать без всяких плагинов, достаточно немного подредактировать htaccess:

Теперь картинки, текст и скрипты при повторном посещении, будут подгружается уже из кэша, а не с самого сайта. Обратите внимание на строку ExpiresDefault «access plus 1 week» – она настраивает время, в течение которого кэш будет храниться на компьютере посетителя. Соответственно, я указал срок жизни в 1 неделю.

Бонусы – комментарии и email администратора

Еще 2 наработки, которые помогут ограничить спамные комментарии и установить электронную почту для сервер-админа.

Анти-спам

Чтобы заблокировать тех, кто слишком часто оставляет комментарии на вашем сайте, добавьте следующий код:

Не забудьте заменить texterra.ru на свой собственный URL.

Электронная почта сервер-администратора

Чтобы установить электронную почту администратора по умолчанию, необходимо вписать такую директиву:

[email protected] нужно изменить на вашу электронную почту.

Чек-лист htaccess

Эти рекомендации помогут не навредить сайту при работе с htaccess-файлом. Обратите на них самое пристальное внимание, чтобы избежать проблем в будущем.

  • Делаем бэкап. Прежде, чем изменять содержимое htaccess, обязательно делаем его копию.
  • Вносим постепенно. Директивы нужно вносить поэтапно, не следует сразу вписывать все возможные варианты.
  • Тестируем. После внесения директивы тестируем ее работоспособность. После этого приступаем к внесению следующей.
  • «От малого к большему». В дочерних htaccess-файлах (речь только о том, когда у вас много htaccess) указываем только новые директивы, иначе можно запутаться. Остальные директивы будут наследоваться от родительского каталога, который находится в корне.
  • Убираем мусор. Когда тестируете новые директивы, обязательно очищайте данные и кэш браузера.
  • Кириллица запрещена без всяких исключений. Кириллические домены указывайте так, как они прописаны в whois.
  • Синтаксис! Внимательно проверяйте синтаксис, особенно если появляется 500-ая ошибка.

Резюме

Возможности htaccess помогут сделать сайт более удобным и функциональным для пользователя, но всегда важно соблюдать умеренность. Следует воздержаться от многих директив – большое количество правил может негативно сказаться на функционировании сайта. Кроме того, увеличится нагрузка на хостинг.

Добавляйте директиву, только если она необходима. Если же задачу можно решить другим, более простым способом, то лучше используйте его. И не забывайте про резервное копирование 🙂

Как реализовать SSL/htaccess в простом веб-сайте без cms



Я сам закодировал веб-сайт (html, css, немного jquery/javascript и php, с подключением к базе данных). По сути, это просто простое портфолио с текстом, каруселью из photos/designs/videos и некоторыми pdf файлами. Таким образом, никакие пользователи не участвуют, кроме простого входа в систему для себя, чтобы загрузить дополнительные фотографии или проекты. Эти фотографии, рисунки и видео сохраняются в простой базе данных.

Всякий раз, когда я захожу на свой сайт, например, в браузере safari, safari дает мне знать, что сайт 'not safe', потому что у меня нет сертификата SSL или файла . https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Однако, когда я добавляю это в свою папку public_html, мой сайт просто не работает. Когда я иду к example.com , он правильно перенаправляет на https://example.com, но я получаю это уведомление:

не найдено

Запрошенный URL не был найден на этом сервере.

Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 404 Not Found.

Когда я удаляю файл .htaccess, он снова работает (но небезопасен в соответствии с моим браузером).

Хостинговая компания ответила: «Мы не создатели сайтов, поэтому мы не можем вам помочь», поэтому я не знаю, как это исправить. Отсюда и этот пост.

Как я могу это исправить, не имея cms, от которой можно зависеть?

php html .htaccess security ssl-certificate
Поделиться Источник Lisa     26 февраля 2020 в 15:10

1 ответ


  • Как реализовать site-wide SSL, оставив index. https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] Все на сайте должно быть защищено, кроме начальной страницы…

  • SSL аутентификация на веб-сайте

    Мне нужно сделать что-то вроде аутентификации сертификата ssl на веб-сайте. Насколько я понимаю свою задачу, мне нужно получить сертификат пользователя ssl и отправить его на сервер, который решит, может ли пользователь быть аутентифицирован или нет. Как я могу получить SSL пользователя по…



1

Ошибка не в коде, она зависит от конфигурации apache, если у вас есть доступ к серверу ssh, посмотрите этот инструмент : https://certbot.eff.org/ . если вас нет, то хостинг compagny должен решить вашу проблему.

Поделиться Skyro682     26 февраля 2020 в 15:57


Похожие вопросы:


Как реализовать http2 без ssl на сервере Apache 2.4.18

Я сделал веб-сайт с протоколом HTTP/2, который работает на сервере Apache 2.4.18 HTTP. В настоящее время я сделал сайт SSL включен, потому что я где-то читал, что HTTP/2 по умолчанию требует SSL….


Как заставить HTTPS (Cloudflare Flexible SSL)?

Я использую Cloudflare Flexible SSL на веб-сайте, который я сам запрограммировал (без фреймворка или CMS). Все работает, и теперь я хочу использовать HTTPS на всем сайте. Я использую PHP на…


.htaccess no SSL только дома, но SSL везде?

Я бы хотел, чтобы .htaccess не добавлял SSL на домашнюю ссылку http://domain.com но на всех остальных ссылках на сайте https://domain.com/folder/index.html Так что только домашняя страница не будет…


Как реализовать site-wide SSL, оставив index.html в покое с помощью .htaccess?

В настоящее время я использую следующее В начале моего корневого файла .htaccess. Есть ли безопасный способ исключить index.html? Это вообще необходимо? RewriteCond %{HTTPS} !=on RewriteRule ^…


SSL аутентификация на веб-сайте

Мне нужно сделать что-то вроде аутентификации сертификата ssl на веб-сайте. Насколько я понимаю свою задачу, мне нужно получить сертификат пользователя ssl и отправить его на сервер, который решит,…


Принуждение всех пользователей проходить через SSL с помощью файла .htaccess

Я только что установил сертификат SSL на своем сайте, но теперь я сталкиваюсь с проблемой, когда пытаюсь заставить всех пользователей пройти через безопасный SSL (HTTPS) вместо HTTP. Я обнаружил,…


можем ли мы развернуть файл .war на простом веб-сайте cPanel?

Можно ли развернуть веб-приложение java с помощью Hibernate и Spring MVC на простом веб-сайте cPanel — > файловый менеджер, как мы развертываем простое приложение php/mysql? заранее спасибо


Как реализовать канонический тег в pimcore CMS?

Я должен реализовать канонические теги на веб-сайте клиента, который работает с Pimcore CMS. У кого-нибудь есть опыт в этом или он может дать мне какие-то подсказки?


Force SSL и www в URL из Angular 5 приложений с использованием файла .htaccess

У меня есть веб-сайт на базе Angular 5, и мне нужно реализовать Force SSL с www на этом веб-сайте. Так что в принципе мне нужна любая вариация домена, например http://example.com , example.com,…


htaccess переписать 301 правило перенаправления без www

У меня есть клиент, у которого есть правило перезаписи на своем веб-сайте, которое использует 404 и SSL с https: но оно всегда переписывается на ‘www.mywebsite.com’ . Они хотят этого без www. всякий…

Как создать файл .htaccess на сайте html

Как создать файл .htaccess на сайте html — qaru

Спросил

Просмотрено 4к раз


Хотите улучшить этот вопрос? Добавьте подробности и проясните проблему, отредактировав этот пост.

Закрыт 4 года назад.

Я работаю над html сайтом. Я хочу создать файл .htaccess, чтобы переписать URL-адреса с помощью файла .htaccess. Но я понятия не имею, как создать файл .htaccess и как использовать его на веб-сайте html.

Если у кого-то есть решение, пожалуйста, помогите мне.

Заранее спасибо

задан 10 мая ’17 в 10: 082017-05-10 10:08

БхартиБхарти

111 серебряный знак11 бронзовый знак

Какую операционную систему / программное обеспечение вы используете? В Windows попробуйте вручную создать файл с помощью Блокнота -> Сохранить как -> выберите из раскрывающегося списка «Все файлы» и введите вручную.htacces имя файла.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *