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 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
</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 онлайн
Создание htaccess для сайта
Для сайтов работающих на серверах Apache есть возможность настроить свой проект с помощью .htaccess. Этот файл указывает веб-серверу как нужно себя вести в этой папке и ее подкаталогах.
При создании файла Hypertext Access обычно возникают проблемы, которые не дают работать сайту. Большинство ошибок возникает из-за лишних пробелов или отсутствия нужных запятых. site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
Настройка 301 редиректа для сайта
Единственная функция где могут возникнуть проблемы у пользователей. Поэтому я решил описать подробную инструкции. Если вы выполните последовательность, описанную ниже, вы сможете выполнить настройку редиректов правильно.
- Вставляем список старых URL адресов в первое поле (каждый адрес с новой строки).
- Список новых URL вставьте во второе текстовое поле (каждый url с новой строки).
- Нажимаем кнопку «Создать»
- Копируем полученный код и вставляем в свой файл htaccess.
Возможности инструмента
Функционал инструмента включает только самые полезные настройки, которыми пользуюсь сам.
- настройка перенаправления с www, http и с другого домена;
- настройка 301 редиректа;
- установка страниц с ошибками сервера;
- включение отображения ошибок php кода;
- добавление слешей в конец url;
- замена «индексных» страниц (index. php, index.html) на слеш;
- удаление лишних слешей в URL страницы;
- защита интернет-ресурса от спам ссылок.
htaccess — файл apache для сайта
Наш хостинг в качестве веб-сервера использует Apache. Данное ПО осуществляет обработку http-запросов и выдает результат, соответствующий обработанному запросу – это может быть html-документ, картинки, файлы и многое другое. Apache является основой для большинства сайтов в мире (около 90% ресурсов в Интернете используют данный веб-сервер) и свою популярность он приобрел благодаря своей функциональности и надежности. Apache легко интегрируется с широко применяемыми СУБД (к примеру MySQL) и интерпретаторами таких популярных языков как PHP и Perl.
Вы, как потребитель услуг хостинга сайтов (или виртуального хостинга), можете легко сконфигурировать веб-сервер под нужды своего сайта, благодаря гибкой настройки Apache, допускающей децентрализованное управление конфигурацией с помощью специально предназначенного для этого файла . htaccess. Данный файл переназначает многие директивы из главного файла конфигурации веб-сервера Apache httpd.conf для вашего сайта или отдельных страниц. Однако, возможен случай ограничения доступа для пользователей к определенным директивам.
Справка: .htaccess
Файл .htaccess может быть размещён в любом каталоге. Действие его директив распространяется на каталог, в котором располагается, и на его дочерние каталоги (если эти директивы не переопределены в файле .htaccess, находящемся в дочернем каталоге). При каждом обращении к веб-серверу .htaccess читается заново, поэтому изменения, которые были внесены Вами в этот файл, сразу же вступают в силу. Так же файлы .htaccess не доступны пользователю из браузера, поскольку они являются служебными. (.+)\.html$ http://www.website.com/$1.php [R=301,L]
Все вышеперечисленные правила предназначены для размещения в .htaccess в корневой папке сайта. При размещении в другом месте может потребоваться небольшая настройка.
Установка индексной страницы по умолчанию в .htaccess
4241 Посещений
В данной статье, мы поговорим об установке индексной страницы, а также, о самом понятии индексная страница или файл. Начнем с того, что индексная страница или файл, это страница, которая открывается по умолчанию, когда пользователь делает запрос не к конкретному файлу, а через веб к каталогу.
Например, когда пользователь делает запрос на http://books/price-list/, где price-list это и есть название каталога, индексный файл это та страница, которая будет отображена при запросе к каталогу, но без указания имени конкретного файла.
Существует список тех файлов, что по умолчанию являются индексными: index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm или default.html.
Если же вам необходимо, чтобы в качестве индексного файла открывался какой-то иной или произвольный файл, тогда вам нужно придерживаться следующей инструкции. Откройте файл .htaccess и пропишите в соответствующем каталоге:
DirectoryIndex имя файла
Например: пользователь дает запрос на http://books/price-list/, таким образом откроется индексный файл index.html. Если же вам нужно чтобы открылась страница myprice.php, пропишите это так:
DirectoryIndex myprice.php
Тогда вы получите желаемый результат.
Как правильно убрать .
html в конце URL? Способ для HTML сайтов и Mobirise.Такое, присуще всем HTML сайтам и тут, нет ничего страшного. С точки зрения SEO, поисковые системы не относяться негативно к сайтам, у которых на конце URL-адреса есть расширение .html
Однако, с точки зрения юзабилити и эстетики, можно убрать на конце страницы, расширение .html
Поэтому, владельцы HTML сайтов, часто задаются вопросом ,а как убрать .html в конце адреса каждой веб-страницы?
Если у вас HTML сайт, или сайт на конструкторе сайтов Mobirise, вам нужно создать файл .htaccess и разместить его в корень вашего сайта на хостинге. Создать файл .htaccess, можно в любом текстовом редакторе. Однако, лучше это сделать в программе Notepad++ или аналогичной.
1-й Вариант файла .htaccess — самый оптимальный вариант.
Способ для HTML сайтов. В том числе и для тех сайтов, которые созданы в конструкторе сайтов Mobirise.
Файл . index\.html$ https://ВАШ_САЙТ/ [R=301,L]
Redirect 301 /index https://ВАШ_САЙТ
Где указанно ВАШ_САЙТ, необходимо указать URL вашего сайта. Если код не заработает, вставьте в самом начале следующую строку:
Options +FollowSymLinks -MultiViewsОднако, зачастую, этого не нужно. При этом, все зависит от каждого хостинга.
Файл .htaccess, нужно сохранить со следующим именем:
.htaccess
При этом, он должен быть без расширения. Сохраняйте его, БЕЗ расширения на конце файла! Если файл сохранился у вас с расширением (часто, это расширение .txt), выберите Переименовать файл и удалите расширение (при условии, если у вас в системе, настроено отображение расширений на конце файлов). При сообщении системы о том, что фал может перестать работать, Соглашаемся и подтверждаем действие. Вот скрин, как должен выглядеть сохраненный файл:
Данный код, что приведен выше, позволит вам не только убрать .html на конце страниц, а и удалить дубль главной страницы index. /]$ %{REQUEST_URI}.html [QSA,L]
При этом, 2-й и 3-й варианты, не удаляют дубль на главную страницу. При желании, вы можете добавить 301 редирект, в конце содержимого кода (через пробел на одну строку в конце основного кода, по аналогу с первым вариантом):
Redirect 301 /index https://ВАШ_САЙТ
Где вместо ВАШ_САЙТ, указываем URL на свою главную страницу. Если не настроить 301 редирект, ваша главная страница сайта, будет открываться приблизительно так:
Или так:
На заметку.
Если у вас сайт на Mobirise, есть инструкция на официальном сайте Mobirise с информацией, как убрать .html на конце страницы. В принципе, если вышеприведенные варианты не сработают, воспользуйтесь данным способом, как последним вариантом.
Обратите внимание!
Уже неоднократно сталкиваюсь, когда пользователи создают данный файл (файл .htaccess), с расширением на конце. Нередко, встречаю .txt на конце. Вот пример неверного файла:
Это — ОШИБКА. На конце файла, НЕ должно быть расширения. Только, название .htaccess
На хостинге, файл .htaccess, будет выглядеть так:
Файлы .htaccess в данной заметке, применимы для всех HTML сайтов, в том числе и для сайтов, созданных в конструкторе Mobirise, что позволяет убрать html из url страниц. Способ рабочий и используется мною на всех сайтах HTML. Однако, при создании файла .htaccess, нет универсальных решений. Некоторые хостинги, не дают доступ к редактированию/созданию файла .htaccess и/или вносят ряд ограничений. При этом, в большинстве случаев, приведенные выше варианты, самые оптимальные и универсальные.
Нужен стабильный, безопасный и недорогой хостинг?
Безопасный, стабильный и доступный по цене хостинг. Узнать больше…
Добавлено 22.02.2021
По просьбе пользователя в комментарии, добавляю вариант для тех, кому нужно убрать полностью index.html на всех страницах сайта. (.*)/index\.html$ /$1/ [R=301,L]
Повторюсь, что настройки .htaccess, сильно зависят от каждого хостинга. Если у вас возникают проблемы с настройкой .htaccess на вашем хостинге, обратитесь за помощью к техподдержке своего хостинга.
Если у вас многоязычная версия сайта, созданная в конструкторе сайтов Mobirise, ознакомьтесь с основными моментами, которые нужно учитывать при создании многоязычной версии сайта в конструкторе Mobirise: «Как создать многоязычную версию сайта в Mobirise?».
Если будут вопросы, поправки и дополнения – оставляйте комментарии.
Как написать .htaccess файл для сайта
Файл .htaccess являются по своему назначению конфигурационным файлом уровня каталога(директории) для web сервера Apache. Это означает, что директивы из этого файла исполняются Apache локально только при обращении к директории, содержащий этот файл. Область действия этих директив распространяется только на каталог, в котором расположен файл, и на вложенные каталоги, до тех пор пока они не будут переопределены в других файлах . htaccess из вложенных каталогов. Файл.htaccess перечитывается при каждом обращении к веб-серверу, так что изменения, внесенные в этот файл, вступают в силу немедленно.
Таки образом apache предоставляет нам удобный инструмент конфигурации на уровне директорий сайта. Это расширяет наши возможности так как не все настройки удобно делать на глобальному уровне и на уровне виртуального хоста. Так же на хостингах, владелец сайта, как правило, не имеет возможности выполнять настройки apache на глобальном уровне и на уровне виртуального хоста, но у него может быть возможность задать требуемые настройки на уровне каталогов сайта. Для того что бы apache принимал и исполнял директивы из файлов .htaccess каталогов сайта нужно, что бы на глобальном уровне или на уровне виртуального хоста apache это было разрешено для сайта.
Делается это разрешение при помощи следующего блока кода:
<Directory /home/my_site/www> AllowOverride All #Другие директивы . .. </Directory>
Здесь в теге <Directory> указывается физический путь на сервере до корня вашего сайта, и внутри тега указывается директива AllowOverride. Эта директива может быть установлена в None, чтобы сервер не читал файл .htaccess. Если она установлена в All — сервер будет допускать все директивы .htaccess файла. Значение по умолчанию: AllowOverride All.
Теперь пару слов о названии файла .htaccess. Этот файл может называться и по другому, и это тоже устанавливается в глобальном конфиге apache директивой AccessFileName. По умолчанию эта директива установлена в конфиге как AccessFileName .htaccess, и это значение обычно никто не меняет, но вы должны знать, что изменить его на другое возможно.
Синтаксис файлов .htaccess в общем случае аналогичен синтаксису главного файла конфигурации apache. Однако, администратор может ограничивать для пользователей доступ к тем или иным директивам. То есть, несмотря на то, что команда, в принципе, может исполняться из . htaccess, администратор может запретить доступ к конкретной директиве. Учитывайте это при работе. Также хочу заметить такой момент, когда вы пишите директивы работающие с каталогами? то в главных конфигурационных файлах apache их нужно оборачивать в тег <Directory /path/…> с указанием каталога к которому они применимы, однако при написании этих директив в .htaccess файле уже не нужно их оборачивать в тег <Directory>, если вы хотите что бы они применялись к текущему каталогу файла .htaccess, если же вы хотите применить их только к вложенному каталогу то тогда, опять же, нужно обернуть в тег <Directory>.
Для чего мы можем использовать .htaccess файл. Вариантов здесь немало, вот самые распространенные из них:
1.Для управления разрешениями на доступы к каталогам сайта (запаролить директорию, запретить доступ к файлам определенного формата, или доступ к сайту в определенный промежуток времени, запретить или открыть доступ с определенных IP адресов, управлять роботами поисковиков)
2. Для перезаписи текущего URL на новый в зависимости от условий (см. также описание mod_rewrite сервера Apache и логику его обработки правил )
3.Для явного указания кодировки сайта.
4.Для разрешения или запрета просмотра файлов сайта
5.Для защиты от хотлинка
6.Для выполнения ридирктов
7.Для задания своих страниц ошибок
8.Для переопределения индексного файла
9…. и многое другое.
Давайте для примера напишем некий обобщенный файл .htaccess.
В него мы соберем наиболее распространенные случаи использования директив и добавим к ним комментарии. И из этого шаблона путем удаления не нужного вы сможете всегда подготовить конкретный .htaccess для ваших задач. Здесь символ # — это символ комментария применяемый в конфигах apache.
Подробные пояснения к коду шаблона см. после него.
# .htaccess начало шаблона # Установка временной зоны SetEnv TZ Europe/Moscow # Установим принудительно кодировку страниц сайта AddDefaultCharset UTF-8 # Зададим index файл который будет # отдаваться если запрошенный не найден DirectoryIndex index. php index.html # Запретим пользователям просматривать файлы директории Options -Indexes # Разрешим следовать за символическими связями в этом каталоге Options +FollowSymLinks # Разрешение доступа только для указанных IP Order Deny,Allow Deny from all Allow from x.x.x.x # Или запрет доступа по IP Order allow,deny deny from x.x.x.x deny from x.x.x.x allow from all # Запретить всем, то только # одну эту строку указать Deny from all # Закрыть доступ к вложенной директории относительно текущего файла # можно так, или положив туда отдельный .htaccess файл <Directory /passwds/> Order Deny,Allow Deny from All </Directory> # Закрыть директорию паролем AuthType Basic AuthName "Enter a password" #путь до файла с паролями и пользователями AuthUserFile /full/path/to/.htpasswd require valid-user # или закрыть вложенную директорию паролем <Directory /passwds/> AuthType Basic AuthName "Enter a password" #путь до файла с паролями и пользователями (абсолютный или относительно ServerRoot) AuthUserFile /full/path/to/. htpasswd require valid-user </Directory> # Запрет на доступ для файла .htpasswd # для всех посетителей кроме разрешенных IP <Files ".htpasswd"> Order Deny,Allow Deny from all Allow from x.x.x.x, x.x.x.xx </Files> # Блок если нужно отключить обработку PHP # можно и для <Directory> задать <IfModule mod_php5.c> php_value engine off </IfModule> <IfModule mod_php4.c> php_value engine off </IfModule> # # Блок изменение настроек PHP # некоторые директивы зависят от версии PHP #php_flag register_globals off #php_value memory_limit 16M #for files uploading - if needed #php_value max_execution_time 500 #php_value max_input_time 500 #php_value upload_max_filesize 30M #php_value post_max_size 30M #php_flag display_errors off #Настройка PHP для загрузки больших файлов до 256M php_value memory_limit 256M php_value upload_max_filesize 256M php_value post_max_size 256M # # Перезапись URL <IfModule mod_rewrite.c> RewriteEngine On # установить корневой URL как / RewriteBase / #Все запросы с HTTP на HTTPS RewriteCond %{HTTPS} =off RewriteRule (. $ RewriteCond %{HTTP_REFERER} !google. [NC] RewriteCond %{HTTP_REFERER} !yandex. [NC] RewriteCond %{HTTP_REFERER} !search?q=cache [NC] RewriteCond %{HTTP_REFERER} !msn. [NC] RewriteCond %{HTTP_REFERER} !yahoo. [NC] RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpe [L] # </IfModule> # Вывод 404 ошибки если выключен mod_rewrite <IfModule !mod_rewrite.c> ErrorDocument 404 /index.php </IfModule> # Зададим свои страницы для ошибок ErrorDocument 404 /err_404.html ErrorDocument 403 /err_403.html # # Блок кода редиректа на мобильную версию сайта # Как вариант привожу здесь, больше для примера <ifModule mod_rewrite.c> RewriteEngine on # Проверить строку UserAgent браузера RewriteCond %{HTTP_USER_AGENT} acs [NC,OR] RewriteCond %{HTTP_USER_AGENT} alav [NC,OR] RewriteCond %{HTTP_USER_AGENT} alca [NC,OR] RewriteCond %{HTTP_USER_AGENT} amoi [NC,OR] RewriteCond %{HTTP_USER_AGENT} audi [NC,OR] RewriteCond %{HTTP_USER_AGENT} aste [NC,OR] RewriteCond %{HTTP_USER_AGENT} avan [NC,OR] RewriteCond %{HTTP_USER_AGENT} benq [NC,OR] RewriteCond %{HTTP_USER_AGENT} bird [NC,OR] RewriteCond %{HTTP_USER_AGENT} blac [NC,OR] RewriteCond %{HTTP_USER_AGENT} blaz [NC,OR] RewriteCond %{HTTP_USER_AGENT} brew [NC,OR] RewriteCond %{HTTP_USER_AGENT} cell [NC,OR] RewriteCond %{HTTP_USER_AGENT} cldc [NC,OR] RewriteCond %{HTTP_USER_AGENT} cmd- [NC,OR] RewriteCond %{HTTP_USER_AGENT} dang [NC,OR] RewriteCond %{HTTP_USER_AGENT} doco [NC,OR] RewriteCond %{HTTP_USER_AGENT} eric [NC,OR] RewriteCond %{HTTP_USER_AGENT} hipt [NC,OR] RewriteCond %{HTTP_USER_AGENT} inno [NC,OR] RewriteCond %{HTTP_USER_AGENT} ipaq [NC,OR] RewriteCond %{HTTP_USER_AGENT} java [NC,OR] RewriteCond %{HTTP_USER_AGENT} jigs [NC,OR] RewriteCond %{HTTP_USER_AGENT} kddi [NC,OR] RewriteCond %{HTTP_USER_AGENT} keji [NC,OR] RewriteCond %{HTTP_USER_AGENT} leno [NC,OR] RewriteCond %{HTTP_USER_AGENT} lg-c [NC,OR] RewriteCond %{HTTP_USER_AGENT} lg-d [NC,OR] RewriteCond %{HTTP_USER_AGENT} lg-g [NC,OR] RewriteCond %{HTTP_USER_AGENT} lge- [NC,OR] RewriteCond %{HTTP_USER_AGENT} maui [NC,OR] RewriteCond %{HTTP_USER_AGENT} maxo [NC,OR] RewriteCond %{HTTP_USER_AGENT} midp [NC,OR] RewriteCond %{HTTP_USER_AGENT} mits [NC,OR] RewriteCond %{HTTP_USER_AGENT} mmef [NC,OR] RewriteCond %{HTTP_USER_AGENT} mobi [NC,OR] RewriteCond %{HTTP_USER_AGENT} mot- [NC,OR] RewriteCond %{HTTP_USER_AGENT} moto [NC,OR] RewriteCond %{HTTP_USER_AGENT} mwbp [NC,OR] RewriteCond %{HTTP_USER_AGENT} nec- [NC,OR] RewriteCond %{HTTP_USER_AGENT} newt [NC,OR] RewriteCond %{HTTP_USER_AGENT} noki [NC,OR] RewriteCond %{HTTP_USER_AGENT} opwv [NC,OR] RewriteCond %{HTTP_USER_AGENT} palm [NC,OR] RewriteCond %{HTTP_USER_AGENT} pana [NC,OR] RewriteCond %{HTTP_USER_AGENT} pant [NC,OR] RewriteCond %{HTTP_USER_AGENT} pdxg [NC,OR] RewriteCond %{HTTP_USER_AGENT} phil [NC,OR] RewriteCond %{HTTP_USER_AGENT} play [NC,OR] RewriteCond %{HTTP_USER_AGENT} pluc [NC,OR] RewriteCond %{HTTP_USER_AGENT} port [NC,OR] RewriteCond %{HTTP_USER_AGENT} prox [NC,OR] RewriteCond %{HTTP_USER_AGENT} qtek [NC,OR] RewriteCond %{HTTP_USER_AGENT} qwap [NC,OR] RewriteCond %{HTTP_USER_AGENT} sage [NC,OR] RewriteCond %{HTTP_USER_AGENT} sams [NC,OR] RewriteCond %{HTTP_USER_AGENT} sany [NC,OR] RewriteCond %{HTTP_USER_AGENT} sch- [NC,OR] RewriteCond %{HTTP_USER_AGENT} sec- [NC,OR] RewriteCond %{HTTP_USER_AGENT} send [NC,OR] RewriteCond %{HTTP_USER_AGENT} seri [NC,OR] RewriteCond %{HTTP_USER_AGENT} sgh- [NC,OR] RewriteCond %{HTTP_USER_AGENT} shar [NC,OR] RewriteCond %{HTTP_USER_AGENT} sie- [NC,OR] RewriteCond %{HTTP_USER_AGENT} siem [NC,OR] RewriteCond %{HTTP_USER_AGENT} smal [NC,OR] RewriteCond %{HTTP_USER_AGENT} smar [NC,OR] RewriteCond %{HTTP_USER_AGENT} sony [NC,OR] RewriteCond %{HTTP_USER_AGENT} sph- [NC,OR] RewriteCond %{HTTP_USER_AGENT} symb [NC,OR] RewriteCond %{HTTP_USER_AGENT} t-mo [NC,OR] RewriteCond %{HTTP_USER_AGENT} teli [NC,OR] RewriteCond %{HTTP_USER_AGENT} tim- [NC,OR] RewriteCond %{HTTP_USER_AGENT} tosh [NC,OR] RewriteCond %{HTTP_USER_AGENT} tsm- [NC,OR] RewriteCond %{HTTP_USER_AGENT} upg1 [NC,OR] RewriteCond %{HTTP_USER_AGENT} upsi [NC,OR] RewriteCond %{HTTP_USER_AGENT} vk-v [NC,OR] RewriteCond %{HTTP_USER_AGENT} voda [NC,OR] RewriteCond %{HTTP_USER_AGENT} w3cs [NC,OR] RewriteCond %{HTTP_USER_AGENT} wap- [NC,OR] RewriteCond %{HTTP_USER_AGENT} wapa [NC,OR] RewriteCond %{HTTP_USER_AGENT} wapi [NC,OR] RewriteCond %{HTTP_USER_AGENT} wapp [NC,OR] RewriteCond %{HTTP_USER_AGENT} wapr [NC,OR] RewriteCond %{HTTP_USER_AGENT} webc [NC,OR] RewriteCond %{HTTP_USER_AGENT} winw [NC,OR] RewriteCond %{HTTP_USER_AGENT} winw [NC,OR] RewriteCond %{HTTP_USER_AGENT} xda [NC,OR] RewriteCond %{HTTP_USER_AGENT} xda- [NC,OR] RewriteCond %{HTTP_USER_AGENT} up. browser [NC,OR] RewriteCond %{HTTP_USER_AGENT} up.link [NC,OR] RewriteCond %{HTTP_USER_AGENT} windows.ce [NC,OR] RewriteCond %{HTTP_USER_AGENT} iemobile [NC,OR] RewriteCond %{HTTP_USER_AGENT} mini [NC,OR] RewriteCond %{HTTP_USER_AGENT} mmp [NC,OR] RewriteCond %{HTTP_USER_AGENT} symbian [NC,OR] RewriteCond %{HTTP_USER_AGENT} midp [NC,OR] RewriteCond %{HTTP_USER_AGENT} wap [NC,OR] RewriteCond %{HTTP_USER_AGENT} phone [NC,OR] RewriteCond %{HTTP_USER_AGENT} ipad [NC,OR] RewriteCond %{HTTP_USER_AGENT} iphone [NC,OR] RewriteCond %{HTTP_USER_AGENT} iPad [NC,OR] RewriteCond %{HTTP_USER_AGENT} iPhone [NC,OR] RewriteCond %{HTTP_USER_AGENT} ipod [NC,OR] RewriteCond %{HTTP_USER_AGENT} iPod [NC,OR] RewriteCond %{HTTP_USER_AGENT} pocket [NC,OR] RewriteCond %{HTTP_USER_AGENT} mobile [NC,OR] RewriteCond %{HTTP_USER_AGENT} android [NC,OR] RewriteCond %{HTTP_USER_AGENT} Android [NC,OR] RewriteCond %{HTTP_USER_AGENT} pda [NC,OR] RewriteCond %{HTTP_USER_AGENT} PPC [NC,OR] RewriteCond %{HTTP_USER_AGENT} Series60 [NC,OR] RewriteCond %{HTTP_USER_AGENT} Opera. Mini [NC,OR] RewriteCond %{HTTP_USER_AGENT} Moby [NC,OR] RewriteCond %{HTTP_USER_AGENT} Mobi [NC,OR] # Проверить служебные заголовки, отсылаемые браузером RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml" [NC,OR] RewriteCond %{HTTP_ACCEPT} "application/vnd.wap.xhtml+xml" [NC,OR] # Проверить исключения RewriteCond %{HTTP_USER_AGENT} !windows.nt [NC] RewriteCond %{HTTP_USER_AGENT} !bsd [NC] RewriteCond %{HTTP_USER_AGENT} !x11 [NC] RewriteCond %{HTTP_USER_AGENT} !unix [NC] RewriteCond %{HTTP_USER_AGENT} !macos [NC] RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] RewriteCond %{HTTP_USER_AGENT} !playstation [NC] RewriteCond %{HTTP_USER_AGENT} !google [NC] RewriteCond %{HTTP_USER_AGENT} !yandex [NC] RewriteCond %{HTTP_USER_AGENT} !bot [NC] RewriteCond %{HTTP_USER_AGENT} !libwww [NC] RewriteCond %{HTTP_USER_AGENT} !msn [NC] RewriteCond %{HTTP_USER_AGENT} !america [NC] RewriteCond %{HTTP_USER_AGENT} !avant [NC] RewriteCond %{HTTP_USER_AGENT} !download [NC] RewriteCond %{HTTP_USER_AGENT} !fdm [NC] RewriteCond %{HTTP_USER_AGENT} !maui [NC] RewriteCond %{HTTP_USER_AGENT} !webmoney [NC] RewriteCond %{HTTP_USER_AGENT} !windows-media-player [NC] # При выполнении условий переадресация на мобильную версию сайта RewriteRule ^(. $ http://m.%1 [R=302,L] </ifModule> # .htaccess конец шаблона
Разъяснения по коду шаблона:
Расшифрую некоторые флаги из директив:
- RewriteCond … [NC] — NC значит регистр нечувствительное сравнение выполнять
- RewriteCond … [NC,OR] — NC см. выше, OR — значит объединять RewriteCond через OR, по умолчанию если ничего не указана то RewriteCond объединяются через AND оператор.
- RewriteRule … [L] — L значит закончить (остановить обработку) на этом RewriteRule правиле любые дальнейшие преобразования URL, т.е. последующие RewriteRule не выполнять.
- RewriteRule … [L,R=302] — L см. выше, R=302 значит выполнить редирект с кодом 302 на преобразованный URL
- RewriteRule … [R=301,QSA,L] — L и R см. выше, QSA — при преобразовании URL выполнять при стыковку заданных частей, а не замену.
- RewriteRule … [F] — F, значит отказать в выдачи результата по этому URL кодом 403 Forbidden.
- RewriteRule . — [G,L] G|Gone — [G] flag значит отдать код 410 Gone status — рекомендация забыть этот URL
AuthUserFile — задает путь к файлу с паролями для http авторизации пользователя. Путь может быть абсолютный от корня файловой системы Linux сервера или относительный от ServerRoot apache. В Ubuntu ServerRoot «/etc/apache2» по умолчанию. При задании относительного пути от ServerRoot apache начальный слеш в пути не указывается, иначе путь будет восприниматься как абсолютный от корня Linux. Также, если путь содержит недопустимые символы и пробелы его нужно заключать в кавычки, это общее правило.
Order, Deny, Allow
Теперь еще раз, но уже более детально, хотелось бы вернуться к директивам управление доступом: Order, Deny, Allow и более детально описать ее синтаксис и логику.
Директивы Allow, Deny, Order модуля mod_access_compat нежелательны к использованию и считаются устаревшими, хотя и поддерживаются еще в версиях Apache 2.3 и 2.4. В следующих версиях они будут удалены. Вместо них, начиная с версии Apache 2.3, этот функционал реализуется директивой Require, которая позволяет более гибко настраивать доступы, чем устаревшие директивы. Детали смотрите в статье «Контроль доступа клиента в Apache», которая подробно описывает директивы Require, Allow, Deny, Order с примерами их использования.Директива Order синтаксис: Order [Deny,Allow] или [Allow,Deny]
По умолчанию директива Order имеет порядок: Deny,Allow. Обратите внимание, что Deny,Allow пишутся без пробела.
В зависимости от того в каком порядке указаны директивы Deny,Allow или Allow,Deny меняется логика работы.
Если Deny,Allow то запрещается доступ со всех IP кроме указанных, если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее идут секции описания для доступа и запрета. Ключевое слово all означает со всех IP.
Например, что бы запретить (блокировать) доступ с IP x.x.x.x и x.x.x.xx и разрешить доступ всем остальным необходимо добавить в .htaccess следующий код:
# Разрешить ВСЕМ кроме указанных IP
Order Allow,Deny
Allow from all
Deny from x.x.x.x x.x.x.xx
Обратите внимание что IP записаны через пробел. Можно также указать IP как IP/маска.
Для обратной ситуации, что бы запретить доступ со всех IP кроме x. x.x.x и x.x.x.xx нам необходимо добавить в .htaccess следующий код:
# Запретить ВСЕМ кроме указанных IP
Order Deny,Allow
Deny from all
Allow from x.x.x.x x.x.x.xx
Запрет или разрешение можно указывать и на отдельный файл или группы файлов. Например, что бы запретить доступ всех кроме IP x.x.x.x к файлу passwd.html, который расположен в текущей директории.
# Запретить файл passwd.html ВСЕМ кроме указанных IP
<Files «passwd.html»>
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Files>
Аналогично можно запретить или разрешить доступ к определенной группе файлов описав их через регулярное выражение. Например, к файлам с расширением «.key»:
# Запретить файлы *.key ВСЕМ кроме указанных IP
<Files «\. (key)$»>
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Files>
Шаблон получился большой, но на практике нужно стремиться использовать только действительно крайне необходимые директивы. Особенно осторожно нужно поступать с внешними редиректами, так как они приводят к общему увеличению времени обработки запроса. Поэтому делайте их только если они действительно необходимы. Еще хочется предостеречь Вас от прямого копипаста директив из приведенного мною шаблона в ваши реальные конфиги. Код приведенный здесь используйте только для примера, что бы получить представление, что вообще возможно и как это будет выглядеть. В свои же файлы вставляете только те директивы, синтаксис которых вы понимаете, можете расшифровать и которые вы проверили по официальному руководству apache. Ошибки по исполнению директив из файла .htaccess смотрите в логах apache.
Как изменить страницу индекса по умолчанию в файле htaccess
Сервер ищет файлы с определенными именами в качестве первой страницы вашего веб-сайта, также известной как страница индекса . Порядок имен индексных файлов по умолчанию, который просматриваются нашими конкретными серверами: index.htm , index.html , index.php и, наконец, default.htm . Вы можете изменить имя индексного файла, который ищет ваша учетная запись, изменив файл .htaccess .Возможно, вы хотите иметь конкретное пользовательское имя для своего индексного файла или, может быть, вы переходите с другого хоста, а страница индекса имеет другое имя. Таким образом, ваши внутренние ссылки не будут нарушены при переименовании индексного файла.
Что такое файл htaccess?
The. htaccess Файл — это скрытый текстовый файл в вашей учетной записи хостинга, который может быть очень мощным. Он разработан таким образом, что вы можете изменить его, чтобы изменить поведение вашего веб-сайта, которое обычно требует более высокий доступ за пределами вашей учетной записи.Он действует как связующее звено между вашим доменом и сервером и может выполнять множество функций.
Подробнее о htaccess
Изменение индексного файла по умолчанию с помощью htaccess
- Войдите в свою cPanel.
- Найдите категорию Files и щелкните значок File Manager .
- Щелкните Settings в правом верхнем углу.
- Выберите корень документа для домена, с которым вы работаете, и убедитесь, что установлен флажок рядом с Показать скрытые файлы .Нажмите кнопку Сохранить .
- Найдите файл .htaccess и щелкните его правой кнопкой мыши. Это вызывает меню. Найдите и щелкните опцию Edit .
- Вам может быть показано всплывающее окно. Щелкните на кнопке Edit .
- Теперь вы в редакторе htaccess. Вставьте следующий код вверху страницы, чтобы настроить желаемую страницу индекса. В нашем примере ниже мы решили сделать индексную страницу наших папок первой. html.
# Альтернативная индексная страница по умолчанию DirectoryIndex first.html
Вы также можете указать несколько файлов в конфигурации. Файл будет читаться слева направо и проверять их наличие в указанном порядке. В этом примере мы добавляем в список index.htm, index.html и index.php. Сначала сервер проверит файл first.html, если он не найдет файл с таким именем, он перейдет к index.htm и так далее.
# Альтернативные страницы индекса по умолчанию DirectoryIndex first.html index.htm index.html index.php
- Не забудьте нажать кнопку Save Changes в верхнем правом углу, чтобы сохранить новую конфигурацию htaccess.
Быстрый и грязный доступ к .htaccess для небольших личных сайтов
Я размещаю свой личный сайт на общем экземпляре Dreamhost. Мне он нравится, потому что он относительно недорогой, у меня небольшой трафик, и я не делаю ничего особо сложного. Наличие полного корневого доступа при размещении на виртуальном частном сервере (VPS) или выделенном сервере не имеет смысла для того, что я делаю. Однако я по-прежнему хочу иметь некоторый контроль на уровне сервера над тем, что и как доступно на моем веб-сайте. Вот где появляется .htaccess
.
Обновление: по состоянию на начало 2019 года на моем личном сайте используется установка nginx на Digital Ocean, а не установка apache на Dreamhost. Пока что мне нравится Digital Ocean намного больше, чего бы это ни стоило. 🙂
Многие варианты хостинга используют серверы Apache HTTP на внутренней стороне для обслуживания вашего веб-сайта.На самом базовом уровне ваш веб-сайт представляет собой набор файлов, хранящихся где-то на компьютере. Вы хотите, чтобы люди на других компьютерах могли получить доступ к этим файлам через Интернет. Веб-сервер — это программное обеспечение, которое принимает запросы, находит нужные файлы и возвращает контент клиенту. .htaccess
— это файл, используемый Apache, чтобы дать вам больше контроля над обработкой этих запросов. .htaccess Файлы
устанавливают конфигурацию для всех запросов файлов в каталоге, в котором он находится.
Почему это должно меня волновать?
Ваш веб-сайт сможет работать без файла .htaccess
для точной настройки конфигурации вашего сервера. Но использование его функций может позволить сделать косметические улучшения, такие как принудительное добавление или удаление www
из вашего URL-адреса или устранение необходимости в расширениях файлов .html
при ссылках на страницы вашего сайта.
Он также может обеспечить преимущества безопасности. Если вы используете git для управления развертыванием своего сайта, вы можете случайно раскрыть учетные данные или конфиденциальную информацию в открытом Интернете.Вы также можете заставить людей использовать https
при подключении к вашему сайту, что, помимо того, что является правильным шагом с точки зрения безопасности, может помочь повысить ваш рейтинг SEO.
Некоторые люди сразу же отмечают, что использование .htaccess
для настройки вместо использования основной конфигурации Apache приводит к снижению производительности. Это снижение производительности ухудшается, когда ваш сервер находится под высокой нагрузкой. В общем, вы, вероятно, больше всего будете полагаться на .htaccess
, если вы работаете в среде общего хостинга.Если вы просто хотите разместить небольшой сайт-портфолио или игрушечное приложение, погрузиться в облачные вычисления, получить root-доступ и стать вашим собственным системным администратором Apache, вероятно, будет излишним.
Если вы привлекаете большой трафик и / или испытываете трудности с высокой нагрузкой на свой сервер, вам, вероятно, следует переместить на VPS, где у вас есть root-доступ, и использовать конфигурацию основного сервера. Если это проблема для вас, вероятно, вы выходите за рамки одной операции и должны привлечь кого-нибудь, кто поможет с надежностью сайта.Но если вы просто запускаете небольшой, в основном статический сайт, не стоит беспокоиться о падении производительности в результате использования .htaccess
.
. htaccess
более ограничен по объему, чем ваша основная конфигурация Apache в httpd.conf
. Вы не сможете делать такие вещи, как операции на уровне каталогов с .htaccess
. Если вы много работаете, когда хотите контролировать доступ к своему сайту на уровне каталогов, более надежный вариант хостинга имеет смысл.Но если вы не работаете в сложной среде и не хотите много настраивать надежность сайта, у вас все будет хорошо без корневого доступа.
Вот некоторые вещи, для которых вы можете использовать .htaccess
. Не стесняйтесь копировать / вставлять прямо отсюда, так как я скопировал / вставил от тех, кто был до меня.
Многие из этих фрагментов требуют включения RewriteEngine
. Вам нужно сделать это только один раз для каждого файла, и вы можете поместить в него все свои запросы на перезапись.Для простоты копирования / вставки я включаю RewriteEngine On
во все соответствующие фрагменты. Убедитесь, что вы не копируете его более одного раза.
Защитите себя от кражи трафика
Кража полосы пропускания или хотлинкинг — это практика ссылки на изображение на чужом веб-сайте и его собственное отображение. При этом используется пропускная способность сервера, к которому вы подключаетесь, а не вашего собственного. Это довольно грубо!
Тем не менее, вы можете защитить свой сайт от ссылок на изображения.http (s)?: // (. + \.)? mysite \ .com [NC] RewriteRule. * \. (Jp (e)? G | gif | bmp | png) $ https://imgur.com/ZtXiCBw.gif [L, R] Войти в полноэкранный режимВыйти из полноэкранного режима
(не забудьте заменить mysite \ .com
на ваш реальный URL)
Приведенный выше код проверяет, откуда исходит запрос, или от реферера . Если референт не является вашим сайтом (или пустым), вместо него будет отображаться любое изображение, на которое вы перенаправляете.
Приведенная выше ссылка перенаправляет на следующее изображение на imgur:
Любой, кто столкнется с этим достаточно быстро, научится перестать красть у вас полосу пропускания 🙂Улучшения SEO
Перенаправить старые страницы на новое место
Одна из самых простых и полезных вещей, которые вы можете делать с .htaccess
перенаправляет страницу, которая раньше существовала в одном месте, на новый URL. Это чрезвычайно важно для SEO. Если вы написали популярный пост в блоге и переносите его куда-нибудь, вы не хотите терять ссылочный вес — или влияние, которое ссылка оказывает на поисковую систему — только потому, что ваш контент меняет местоположение.
В общем, вы, вероятно, захотите использовать редирект 301 или 302. 301 — это постоянное перенаправление. Редирект 302 является временным, и , а не сохранит вашу ссылочную стоимость.Однако, когда вы возитесь с перенаправлениями, вы всегда должны сначала использовать 302 и тестировать свои изменения. Если все в порядке, измените его на 301. Вы должны сделать это, чтобы случайно не перенаправить эквити ссылки из старого местоположения в неправильное место.
При форматировании строки перенаправления порядок аргументов следующий
- код состояния (301, 302, 404 и т. Д.)
- старое расположение файла
- новое расположение файла
Перенаправление 302/2016/08/02 / rad-old-blog-post / https: // newdomain.вечеринка / рад-старый-блог-сообщение /
Перенаправление 301 /menu/dessert.html https://new-restaurant-website.supply/menu/dessert/
Войти в полноэкранный режимВыйти из полноэкранного режимаОбеспечить
https
Некоторые варианты хостинга позволяют принудительно установить https
, когда люди подключаются к вашему сайту. Другие просто разрешают https
без строгого соблюдения его использования. Использование https
очень важно как для безопасности, так и для SEO, поэтому, если ваш хостинг-провайдер не обеспечивает соблюдение соединений https
, вам следует использовать .(. *) $ https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301] Войти в полноэкранный режимВыйти из полноэкранного режима
Косметические улучшения
Не требуется
.html
Ничто так не выглядит безвкусным и устаревшим, как .html
, свисающие с конца вашего URL. Я имею в виду, я в основном шучу, но мне действительно не нравится, когда это расширение файла болтается. К счастью, это можно исправить!
RewriteEngine On
RewriteCond% {REQUEST_FILENAME}! -D
RewriteCond% {REQUEST_FILENAME} \.(. *) $ 1.html
Войти в полноэкранный режимВыйти из полноэкранного режима Это условие проверяет, относится ли ваш запрос к допустимому каталогу в вашем проекте. Мы проверяем здесь каталоги, а не файлы, потому что запрос будет примерно таким: mysite.com/info
, что выглядит как имя каталога. Если он не может найти действительный каталог, он проверяет, существует ли действительный файл с именем info.html
. Если есть, перепишите запрос для обслуживания контента с сайта .(. *) $ http://example.com/$1 [L, R = 301]
Войти в полноэкранный режимВыйти из полноэкранного режима
Флаг [NC] здесь означает отсутствие регистра, поэтому вам не нужно беспокоиться о чувствительности к регистру.
Флаг [L] означает «Последний», что означает, что если это условие истинно, выполнить RewriteRule
и не пытаться сопоставить другие RewriteConds
или выполнять другие операции с запросом.
Флаг [R] означает «Перенаправление». Вы можете передать параметр R, чтобы установить код состояния HTTP для перенаправления.Пример [R = 302] или [R = 404].
Улучшения безопасности
Скрыть каталог
.git
Контроль версий — это фантастика даже для статических сайтов. Это может помочь вам легко вернуться к предыдущим версиям и позволяет оглядываться на эволюцию вашего кода. Однако контроль обновлений вашего сайта с помощью git push / pull может открыть уязвимость в системе безопасности. Посетители могут публично получить доступ к вашему каталогу .git
через свой браузер и просмотреть все ваше репо, включая любые секреты или ключи, которые вы можете там хранить.Если вы размещаете что-то более сложное, чем статический личный сайт, это также позволяет любому просматривать ваш исходный код и копировать вашу работу, даже если вы хотели сохранить ее конфиденциальность.
К счастью, вы можете перенаправить любые попытки запросить ваш каталог .git
.
RedirectMatch 404 /\.git
Войти в полноэкранный режимВыйти из полноэкранного режимаПросто! Здесь вы можете вернуть любой понравившийся статус. Мне лично нравится использовать 404, потому что кажется, что такого каталога даже не существует на сервере, и это может препятствовать дальнейшим попыткам доступа к аналогичным файлам.Однако и здесь 403 имеет смысл. Тебе решать.
Ограничить доступ к конфиденциальным файлам
Вероятно, вы не хотите, чтобы случайные посетители вашего сайта имели доступ к вашим файлам точек или другой конфиденциальной информации. Вы можете запретить доступ к определенным файлам для всех или разрешить / заблокировать определенные IP-адреса в .htaccess
.
Примечание. Вы не можете ограничить или разрешить доступ к каталогу уровня , используя .htaccess
. Это одна из тех операций, которые необходимо выполнить в httpd.conf
и требует root-доступа.
# Не позволять никому видеть мой файл .htaccess
<Файлы .htaccess>
Заказать разрешить, запретить
Запретить всем
Войти в полноэкранный режимВыйти из полноэкранного режима Ключевое слово Order
здесь немного сложно, поэтому давайте рассмотрим его. Заказ
принимает один из двух аргументов. Либо разрешить, либо запретить
, либо запретить, разрешить
. Убедитесь, что в аргументе нет пробела между запятой и вторым словом.Если вы поместите туда пробел, это приведет к тому, что все запросы к вашему сайту будут иметь значение 500. Этот аргумент сообщает Apache, в каком порядке он должен обрабатывать операторы allow и deny.
allow, deny
означает, что сначала будут обрабатываться любые операторы Allow
и последними операторы Deny. Самый последний оператор переопределит все операторы, предшествующие ему. Итак, в приведенном выше примере, если вы хотите разрешить свой IP-адрес, а - только , ваш IP-адрес должен просматривать
.htaccess
через curl или браузер, вы можете включить такой оператор, как Allow from 198.51.100.254
. Однако, поскольку ваша конфигурация предписывает серверу сначала обработать все операторы Allow
, а затем переопределить их, вам все равно будет отказано в доступе, потому что Deny from all
был самым последним заказом.
И наоборот, deny, allow
сначала обрабатывает все операторы Deny
, а затем отменяет с помощью Allow
. Если вы собираетесь сделать что-то более сложное, чем запретить или разрешить доступ всем, обязательно обратите внимание на аргумент Order
и обязательно проверьте его.
Вы также можете использовать этот синтаксис для ограничения доступа к определенным методам HTTP. Например, если вы хотите, вы можете ограничить операции POST
и PUT
своей локальной сетью (LAN).
<Предел POST PUT>
Заказать отказать, разрешить
Запретить всем
Разрешить от 198.51.100.254
Войти в полноэкранный режимВыйти из полноэкранного режимаУбедитесь, что вы знаете, где находятся ваши файлы журналов. Даже если у вас нет root-доступа, вы сможете просматривать журналы доступа и ошибок для своего сайта.Журналы ошибок будут очень полезны при отладке любых неожиданных результатов или ошибок, с которыми вы столкнетесь при попытке настроить вашу конфигурацию.
плохой разделитель флагов
Если ваше сообщение об ошибке включает фразу bad flag delimiter
, вероятно, вы добавили лишний пробел в свои флаги RewriteRule
. Флаги разделяются запятыми, а не запятыми + пробелами, поэтому убедитесь, что вы отформатировали флаги следующим образом: [L, R = 301, NC]
, а не так: [L, R = 301, NC]
Некоторые операции здесь запрещены
Если ваше сообщение об ошибке содержит фразу , здесь не разрешено
, вероятно, вы пытаетесь сделать что-то, что необходимо сделать в httpd.conf
основной файл конфигурации. Вам нужно будет либо придумать другой способ достижения своей цели, либо перейти к решению, в котором у вас есть root-доступ и вы можете изменить httpd.conf
.
Для чего вы использовали .htaccess
на своих сайтах? Есть ли что-то, что вы хотите сделать с .htaccess
, но не смогли понять? Дай мне знать в комментариях!
.htaccess - Как удалить .html из URL?
Хороший вопрос, но, похоже, сбил с толку людей.Ответы почти поровну разделились между теми, кто думал, что Дэйв (ОП) сохранял свои HTML-страницы без расширения .html
, и теми, кто думал, что он сохранял их как обычно (с .html
), но хотел URL-адрес, без которого будет отображаться. Хотя вопрос можно было бы сформулировать немного лучше, я думаю, ясно, что он имел в виду. Если он сохранял страницы без .html
, его два вопроса («как удалить .html») и (как «перенаправить любой URL-адрес с.html ’) будет точно таким же вопросом! Так что в этой интерпретации нет особого смысла. Кроме того, его первый комментарий (об избежании бесконечного цикла) и его собственный ответ, похоже, подтверждают это.
Итак, давайте перефразируем вопрос и разберем задачу. Мы хотим достичь двух целей:
- Заметно удалите
.html
, если он является частью запрошенного URL (например,/page.html
) - Направьте обрезанный URL (например,
/ стр.
) обратно на фактический файл (/ стр.html
).
В этом нет ничего сложного. (Мы могли бы достичь второго, просто включив MultiViews.) Задача состоит в том, чтобы выполнить для них и без создания бесконечного цикла.
Ответ Дэйва выполнил свою работу, но он довольно запутанный и совсем не переносимый. (Извини, Дэйв.) Лукаш Хабжик, кажется, убрал ответ Анмола, и, наконец, Амит Верма улучшил их обоих. Однако никто из них не объяснил , как их решения решили основную проблему - как избежать бесконечного цикла.Насколько я понимаю, они работают, потому что переменная THE_REQUEST
содержит исходный запрос от браузера. Таким образом, условие ( RewriteCond% {THE_REQUEST}
) запускается только один раз. Поскольку он не запускается при перезаписи, вы избегаете сценария бесконечного цикла. Но тогда вы имеете дело с полным HTTP-запросом - GET
, HTTP
и всем остальным - что частично объясняет некоторые из уродливых примеров регулярных выражений на этой странице.
Я собираюсь предложить еще один подход, который, на мой взгляд, легче понять.% {REQUEST_URI} .html [КОНЕЦ]
Давайте разберемся…
Первое правило довольно простое. Условие соответствует любому URL-адресу, оканчивающемуся на .html
(или .htm
), и перенаправляет на URL-адрес без расширения имени файла. Это постоянное перенаправление , чтобы указать, что обрезанный URL-адрес является каноническим .
Второе правило тоже простое. Первое условие будет выполнено, только если запрошенное имя файла — , а не — действительный каталог (! -D
).Второй будет пройден, только если имя файла относится к допустимому файлу ( -f
) с добавленным расширением .html. Если оба условия проходят, правило перезаписи просто добавляет «.html» к имени файла. И тогда происходит волшебство… [END]
. Да, это все, что нужно для предотвращения бесконечного цикла. Документация Apache RewriteRule Flags объясняет это:
Использование флага [END] завершает не только текущий раунд перезаписи. обработка (как [L]), но также предотвращает любую последующую перезапись обработка происходит в контексте каталога (htaccess).
htaccess Учебное пособие
Сводка
В этом руководстве вы узнаете о файле .htaccess и его возможностях для улучшения вашего веб-сайта. Just Host поддерживает файлы .htaccess, однако как клиент вы несете ответственность за то, что находится в этом файле, и за то, как он изменяет ваш сайт.Создание файла.htaccess Файл
Вы можете создать файл .htaccess на локальном компьютере или на сервере.На вашем компьютере:
Windows: Используя Блокнот, сохраните файл как .htaccess Mac OS X: Используя TextEdit, сохраните файл как «.htaccess».
Примечание. Если вы сохраните файл как .htaccess, он будет скрыт, и вы не сможете увидеть его в Finder.
Используя предпочитаемый вами FTP-клиент, загрузите файл на сервер.Файл .htaccess должен находиться в папке, в которой расположен ваш сайт, обычно в папке public_html.
На сервере
- Войдите в свою учетную запись cPanel
- Щелкните значок File Manager , расположенный в разделе Files .
- Во всплывающем окне диспетчера файлов выберите «Выбрать скрытые файлы (точечные файлы)».
Примечание. Если вы не видите это всплывающее окно, вам нужно будет щелкнуть ссылку «сбросить все настройки интерфейса» в нижней части страницы cPanel. - Во всплывающем окне диспетчера файлов выберите папку, которую вы хотите открыть, чаще всего это «Web Root (public_html / www)»
- Щелкните кнопку Go .
Примечание. Если вы уже находитесь в диспетчере файлов, вы можете добавить & showhidden = 1 в конец URL-адреса. - Щелкните значок New File , чтобы создать новый файл и назовите его .htaccess
Альтернативные индексные файлы
Возможно, вы не всегда захотите использовать index.htm или index.html в качестве индексного файла для каталога, например, если вы используете файлы PHP на своем сайте, вы можете захотеть, чтобы index.php был индексным файлом для каталога. Однако вы не ограничены «индексными» файлами. Используя .htaccess, вы можете установить foofoo.blah в качестве индексного файла, если хотите!
Альтернативные индексные файлы вводятся в список. Сервер будет работать слева направо, проверяя, существует ли каждый файл, если ни один из них не существует, он отобразит список каталогов (если, конечно, вы не отключили это).
DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm
Пользовательские страницы ошибок
Вы можете настроить свои собственные личные страницы ошибок (например, когда файл не найден) вместо использования страниц ошибок Just Host или отсутствия страницы ошибок. Это сделает ваш сайт более профессиональным.
Вы можете использовать настраиваемые страницы ошибок для любой ошибки, если вам известен ее номер (например, 404 для страницы, не найденной), добавив следующее в ваш.htaccess файл:
Ошибка Номер ошибки документа /file.html
Например, если бы у меня был файл notfound.html в корневом каталоге моего сайта и я хотел бы использовать его для ошибки 404, я бы использовал:
ErrorDocument 404 /notfound.html
Если страница с ошибкой находится не в корневом каталоге вашего сайта, вы можете ввести путь к файлу: ErrorDocument 500 /errorpages/500.html
Вот некоторые из наиболее распространенных ошибок:401 - Требуется авторизация ошибка 400, неверный запрос 403 - Запрещено внутренняя ошибка сервера 500 404 - Неправильная страница
Остановить отображение индекса каталога
Иногда по той или иной причине в вашем каталоге нет индексного файла.Это, конечно, будет означать, что если кто-то наберет имя каталога в своем браузере, будет показан полный список всех файлов в этом каталоге. Это может быть угрозой безопасности вашего сайта.
Чтобы предотвратить это (без создания большого количества новых «индексных» файлов, вы можете ввести команду в свой файл .htaccess, чтобы остановить отображение списка каталогов:
# отключить просмотр каталогов
Параметры ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch -Indexes
# включить просмотр каталогов
Опции Все + Индексы
Запретить / разрешить определенные IP-адреса
Чтобы разрешить доступ к вашему сайту только людям с определенными IP-адресами (например, разрешить людям, использующим определенную сеть, попасть в определенный каталог), или вы можете захотеть заблокировать определенные IP-адреса (например, не допуская нарушителей к вашему сообщению. доски).Это будет работать, только если вы знаете IP-адреса, которые хотите заблокировать.
Имейте в виду, что большинство интернет-провайдеров используют динамические IP-адреса, поэтому это не всегда лучший способ ограничить / предоставить доступ.
Блокировать IP-адрес
#Deny List
заказ разрешить, запретить
deny from 123.123.123.123 # указать конкретный адрес
Отказаться от 123.123.123.123 / 30 # указать диапазон подсети
deny from 123.123. * # указать подстановочный знак IP-адреса
разрешить со всех
Разрешить только определенные IP-адреса
# Список разрешенных
заказ отклонить, разрешить
allow from 123.123.123.123 # указать конкретный адрес
разрешить от 123.123.123.123/30 # указать диапазон подсети
разрешить от 123.123. * # указать подстановочный знак IP-адреса
отрицаю от всех
Примечание. Это по-прежнему позволит сценариям использовать файлы в каталоге.Перенаправление
В cPanel есть инструмент, который может создавать перенаправления для вас, см. Как создать перенаправление
Перенаправить из определенного файла в новый файл
Пример:
Перенаправить / redirect_from.html http://www.newsite.com/folder/redirect_to.html
В приведенном выше примере файл с именем redirect_example.html в корневом каталоге перенаправляется на URL-адрес http://www.newsite.com/folder/redirect_example.html.
Если старый файл находился в подкаталоге, вы можете использовать:
/subdirectory/redirect_from.html
WildCard Перенаправление / перенаправление из одной папки в новую папку
Redirect / redirect_from http: // www.newsite.com/redirect_to
Теперь любой запрос к вашему сайту ниже / olddirectory будет перенаправлен на новый сайт с добавлением дополнительной информации в URL-адресе, например, если кто-то набрал:
http://www.example.com/redirect_from/images/image.gif
Они будут перенаправлены на:
http://www.newsite.com/redirect_to/images/image.gif
Перенаправление (перезапись URL) с помощью Joomla
Чтобы включить перезапись URL-адресов в Joomla, вам необходимо скопировать и вставить следующий код в ваш файл .htaccess.
# По соображениям безопасности, Option followsymlinks не может быть изменен. #Options + FollowSymLinks Параметры + SymLinksIfOwnerMatch
Защита паролем
Одно из многих применений.htaccess может надежно защищать паролем каталоги на веб-сайтах.
Примечание. Если вы хотите использовать инструмент cPanel для защиты папок паролем, ознакомьтесь с нашей статьей: Защита паролем папки на вашем веб-сайте.
Файл .htaccess
Добавление защиты паролем к каталогу с помощью .htaccess занимает два этапа. Первая часть — добавить соответствующие строки в ваш.htaccess в каталоге, который вы хотите защитить. Все, что находится ниже этого каталога, будет защищено паролем:
AuthName "Название раздела"
AuthType Basic
AuthUserFile /home/username/.htpasswds
Требовать действительного пользователя
Есть несколько частей, которые вам нужно будет изменить для своего сайта. Вы должны заменить «Название раздела» названием части сайта, которую вы защищаете. E.грамм. «Личный кабинет».
/Home/username/.htpasswds следует изменить, чтобы отразить полный путь сервера к файлу .htpasswds (подробнее об этом позже). Если вы не знаете полный путь к вашему веб-пространству, проверьте cPanel Just Host. Посмотрите на левый столбец статистики на cPanel.
Файл .htpasswds
Защита каталога паролем требует немного больше усилий, чем любой другой.htaccess, потому что вы также должны создать файл, содержащий имена пользователей и пароли, которым разрешен доступ к сайту. Их следует поместить в файл, который (по умолчанию) должен называться .htpasswd. Его можно разместить в любом месте вашего веб-сайта (так как пароли зашифрованы), но рекомендуется хранить его за пределами корневого веб-сайта (в вашем домашнем каталоге), чтобы к нему невозможно было получить доступ из Интернета.
Ввод имен пользователей и паролей
После того, как вы создали свой.htpasswd (вы можете сделать это в стандартном текстовом редакторе) вы должны ввести логины и пароли для доступа к сайту. Их следует вводить следующим образом:
логин: пароль
Где пароль — это зашифрованный формат пароля. На сайте KxS есть хорошая служба имени пользователя и пароля, которая позволит вам ввести имя пользователя и пароль и выведет их в правильном формате.
Для нескольких пользователей просто добавьте дополнительные строки в файл .htpasswd в том же формате, что и первый.
Доступ к сайту
Когда вы пытаетесь получить доступ к сайту, который был защищен с помощью .htaccess, в вашем браузере появится стандартное диалоговое окно имени пользователя и пароля. В качестве альтернативы вы можете отправить имя пользователя и пароль (в незашифрованном виде) в URL-адресе следующим образом:
http: // имя пользователя: пароль @ www.website.com/directory/
Рекомендуемое содержимое справки
Объясняет, как редактировать .htaccess
Статья базы знаний 269188 просмотров Теги: htaccessУниверсальный и надежный WordPress является фаворитом среди приложений и систем управления контентом.В этой статье представлены девять советов по работе в WordPress.
Как выполнить перенаправление / перезапись URL с помощью файла .htaccess?
Соответствующее содержимое справки
Как принудительно использовать https на всем веб-сайте.
Краткое руководство по установке разрешений для файлов и пользователей в cPanel.
Как запускать сценарии CGI для дополнительных доменов.
В этой статье объясняется, как найти базу данных, используемую сайтом WordPress.
Файл hosts — это простой текстовый файл, который позволяет вам устанавливать IP-адреса для домена на вашем компьютере.Это может перекрыть авторитетный DNS.
Как заставить подкаталог (или подпапку) действовать как public_html для вашего основного домена?
Предотвращение кражи полосы пропускания с помощью механизма перезаписи мод и.htaccess
В этой статье объясняется, как добавить обработчик PHP к вашим файлам .htaccess. Это полезно, если вы хотите настроить версию PHP, которая запускает ваши файлы PHP.
Ваш Complete.Руководство по htaccess: включая основы .htaccess и многое другое
.htaccess руководство по типам MIME
Типы MIME— это типы файлов, изначально предназначенные для электронной почты («Многоцелевые расширения электронной почты в Интернете»). Но не думайте о них просто как о «типах файлов», потому что MIME предлагает определенный формат для их определения. Если вы когда-либо писали документ HTML, вы, скорее всего, указали тип MIME. Наверное, даже не осознавая этого: