- Как сделать, чтобы работал .htaccess на localhost?
- Создание файла .htaccess в Windows
- Что такое файл .htaccess
- Как создать файл .htaccess в Windows
- Пример файла .htaccess
- .htaccess настройка от А до Я
- Все функции и дерективы, настройка .htaccess
- Директивы простого перенаправления (редирект)
- Директивы сложного перенаправления (mod_rewrite)
- Индексные страницы
- Обработка ошибок
- Кодировка
- Управление доступом
- Паролирование директорий
- Указание опций PHP
- mysql.default_host
- mysql.default_user
- mysql.default_password
- display_errors
- display_startup_errors
- error_reporting
- auto_prepend_file
- auto_append_file
- sendmail_from
- user_agent
Как сделать, чтобы работал .htaccess на localhost?
Как сделать чтобы работал поиск в select
Привет! помогите пожалуйста решить задачу, мне нужно сделать поиск в селекте вот пример кода .
Как сделать чтобы javascript работал в Битрикс?
вставил в обертку тегов джаваскрипт именно в битрикс редактировании компонентов — 11
Сервер выдал ошибку 404 not found
Добавлено через 21 минуту
Все, что бы я ни писал в .htaccess ни на что не влияет, этот файл просто не видно
Я не понял, почему вы пишете в адресе folder. Где расположен .htaccess? Если не в корне, а в folder, зачем делать редирект на / ?
попробуйте добавить ограничение по ip
order deny,allow
deny from all
allow from любой внешний ip
на денвере у меня работает однозначно, ибо вещал permission denied, пока не убрал.
если работать не будет, значит .htaccess не там лежит. или остается только догадываться, что за беда.
Добавлено через 5 минут
и на WAMP тоже работает.
где folder\ — это папка, в которой лежит index.php и .htaccess
Но теперь проблема с тем, чтобы перенаправиться из localhost/folder/index.php в localhost/folder. Если пишу как в описании, то меня перекидывает в браузере в каталог localhost, а если написать так, как посоветовал miketomlin:
то перехожу на сайт гугл, все норм. Т.е. неправильно написано регулярное выражение. Подскажите, как сделать так, чтобы из localhost/folder/index.php происходил редирект на localhost/folder/.
Тематические курсы и обучение профессиям онлайн Профессия PHP-разработчик (Skillbox) Fullstack-разработчик на PHP (Skillbox) Веб-разработчик с нуля (Нетология) Профессия веб-разработчик (Skillbox) |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Как сделать, чтобы код работал после условия if?
Всем привет! Есть простое условие. Когда срабатывает это условие, то код под этим условием не.
Bootstrap как сделать чтобы container работал в обвертке
Изучаю bootstrap, возникли вопросы, набросал я блоков http://function.vv.si/ примерно как по своему.
Как сделать правильно массив чтобы код работал?
Мне нужно сделать чтобы метод UpdateSun работал если x = 3,6,9,12. void Update() <.
Как сделать, чтобы random работал в нескольких диапазонах?
Нужно отобразить в одном массиве цифры и буквы в случайном порядке и потом использывать группировку.
Создание файла .htaccess в Windows
Что такое файл .htaccess
Файл .htaccess — это конфигурационный файл веб-сервера Apache, с помощью которого можно переопределить некоторые настройки Apache для всего сайта или конкретной папки.
Как создать файл .htaccess в Windows
Если в ОС семейства Windows попытаться создать файл .htaccess , результатом будет ошибка «Следует ввести имя файла».
Чтобы обойти эту ошибку, нужно создать пустой текстовый документ, после чего переименовать его в .htaccess. (с точкой в конце). После переименования лишняя точка исчезнет.
Если вы используете специальный текстовый редактор, скорее всего вы можете создать файл .htaccess через него. Инструкция для пользователей Notepad++:
- Открываем Notepad++
- Нажимаем Файл -> Сохранить как
- В новом окне выбираем тип файла Все типы (англ. All types ), вводим .htaccess и сохраняем.
Пример файла .htaccess
Одни из самых популярных директив — кодировка сайта и настройки контроля над ошибками. Укажем их в файле .htaccess:
В данном примере мы указали следующие директивы:
- AddDefaultCharset — указывает кодировку сайта.
- error_reporting — указывает, ошибки каких уровней отлавливать (для отображения на сайте и в логах), а каких игнорировать ( -1 означает отлавливать все ошибки).
- display_errors и display_startup_errors — отображать ли ошибки в браузере ( on — отображать, off — не отображать). Обычно включается на время разработки и выключается на работающем сайте.
Теперь файл .htaccess можно поместить в корневую папку с сайтом.
.htaccess настройка от А до Я
.htaccess — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Сегодня мы с вами разберем настройку .htaccess от А до Я.
Все функции и дерективы, настройка .htaccess
Apache — самый распространённый HTTP-сервер. Распространяется бесплатно, включая исходные тексты . Поддерживаются сценарии на CGI (включая FastCGI), PHP, Perl, Java. Аутентификация — базовая, message-digest, TLS (SSL).
С апреля 1996 это самый популярный HTTP-сервер в Интернете, в августе 2007 года он работал на 51% всех веб-серверов.
.htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess присутствует в любом каталоге пользователя.
Файл .htaccess может быть размещен в любом каталоге сайта. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess).
Директивы .htaccess предоставляют пользователю широкий выбор возможностей по настройке своего сайта, среди которых:
Список всех доступных директив можно посмотреть на этой странице .
Директивы простого перенаправления (редирект)
Наиболее часто используемые и наиболее сложные директивы .htaccess. Предположим, мы хотим при запросе нашего сайта переадресовать пользователя на другой URL. Для этого нам необходимо в корневую директорию сайта добавить файл .htaccess со следующим содержимым:
Более сложный пример — мы хотим определенные страницы нашего сайта переадресовывать на другие сайты:
Теперь при обращении к http://mysite.ru/linux будет открываться http://www.linux.org , а при обращении к http://mysite.ru/linux/download.html будет http://www.linux.org/dist/download_info.html . В последнем примере WEB-сервер будет передавать код 301, что означает «документ перемещен постоянно».
Синтаксис команды Redirect выглядит следующим образом:
Директива RedirectMatch аналогична директиве Redirect за исключением того, что в RedirectMatch возможно использование регулярных выражений, что, несомненно, может быть удобно в некоторых условиях. Например, для организации передачи параметров скрипту в теле URL:
Хотя данный пример и вызовет перезагрузку страницы, в дальнейшем его можно будет улучшить. Здесь необходимо сделать небольшое лирическое отступление и поговорить о синтаксисе регулярных выражений.
В регулярном выражении можно использовать любые печатные символы и пробел, но часть символов имеет особое значение:
|
Это все основные примитивы, с помощью которых можно построить любое регулярное выражение.
Директивы сложного перенаправления (mod_rewrite)
Модуль mod_rewrite, имеющийся в составе Apache — это мощнейшее интеллектуальное средство преобразования URL-адресов. С ним возможны почти все типы преобразований, которые могут выполняться или нет в зависимости от разных условий, факторов.
Данный модуль представляет собой основанный на правилах механизм (синтаксический анализатор с применением регулярных выражений), выполняющий URL-преобразования на лету. Модуль поддерживает неограниченное количество правил и связанных с каждым правилом условий, реализуя действительно гибкий и мощный механизм управления URL. URL-преобразования могут использовать разные источники данных, например, переменные сервера, переменные окружения, заголовки HTTP, время и даже запросы к внешним базам данных в разных форматах для получения URL нужного Вам вида .
Директива RewriteCond определяет условие, при котором происходит преобразование. RewriteCond определяет условия для какого-либо правила. Перед директивой RewriteRule располагаются одна или несколько директив RewriteCond. Следующее за ними правило преобразования используется только тогда, когда URI соответствует условиям этой директивы, а также условиям этих дополнительных директив.
Под обратной связью подразумевается использование частей сравниваемых URL для дальнейшего использования, т.е. передачи параметров или для построения нового URL.
Все эти проверки также могут быть предварены префиксом восклицательный знак (‘!’) для инвертирования их значения.
RewriteEngine включает или выключает работу механизма преобразования. Если она установлена в положение off, этот модуль совсем не работает. Заметьте, что по умолчанию настройки преобразований не наследуются. Это означает, что вы должны иметь RewriteEngine on директиву для каждого виртуального хоста, в котором вы хотите использовать этот модуль.
Синтаксис RewriteEngine выглядит следующим образом:
Используйте для комбинирования условий в правилах OR вместо AND. Типичный пример — перенаправление запросов на поддомены в отдельные каталоги.
Для выдачи главной страницы какого-либо сайта, согласно «User-Agent:» заголовку запроса, Вы можете использовать следующие директивы:
Для выдачи разных сайтов для разных браузеров, согласно «User-Agent:» заголовку запроса, Вы можете использовать следующие директивы:
Общий синтаксис директивы RewriteRule выглядит следующим образом:
В подстановке вы можете использовать, в том числе, и специальные флаги путем добавления в качестве третьего аргумента директивы RewriteRule. Флаги — это разделённый запятыми следующий список флагов:
‘redirect|R [=code]’
(вызывает редирект)
Префикс в Подстановке вида http://thishost[:thisport]/ (создающий новый URL из какого-либо URI) запускает внешний редирект (перенаправление). Если нет никакого кода, в подстановке ответ будет со HTTP статусом 302 (ВРЕМЕННО ПЕРЕМЕЩЕН). Для остановки процесса преобразования вам также нужно написать флаг ‘L’.
‘forbidden|F [=code]’
(делает URL запрещенным)
Это делает текущий URL запрещённым, например, клиенту немедленно отправляется ответ с HTTP статусом 403 (ЗАПРЕЩЕНО). Используйте этот флаг в сочетании с соответствующими RewriteConds для блокирования URL по некоторым критериям.
‘gone|G [=code]’
(делает URL «мёртвым»)
Этот флаг делает текущий URL «мертвым», т.е., немедленно отправляется HTTP ответ со статусом 410 (GONE). Используйте этот флаг для маркировки «мертвыми» несуществующие более страницы.
‘proxy|P [=code]’
(вызвает прокси)
Этот флаг помечает подстановочную часть как внутренний запрос прокси и немедленно (т.е. процесс преобразования здесь останавливается) пропускает его через прокси-модуль. Используйте этот флаг для того, чтобы добиться более мощной реализации директивы ProxyPass, интегрирующей некоторое содержимое на удаленных серверах в пространство имён локального сервера.
‘last|L [=code]’
(последнее правило)
Остановить процесс преобразования на этом месте и не применять больше никаких правил преобразований. Используйте этот флаг для того, чтобы не преобразовывать текущий URL другими, следующими за этим, правилами преобразований.
‘next|N [=code]’
(следуюший раунд)
Перезапустить процесс преобразований (начав с первого правила). В этом случае URL снова сопоставляется неким условиям, но не оригинальный URL, а URL вышедший из последнего правила преобразования. Используйте этот флаг для перезапуска процесса преобразований, т.е. безусловному переходу на начало цикла.
‘chain|C [=code]’
(связь со следующим правилом)
Этот флаг связывает текущее правило со следующим (которое, в свою очередь, может быть связано со следующим за ним, и т.д.). Это имеет следующий эффект: если есть соответствие правилу, процесс продолжается как обычно, т.е. флаг не производит никакого эффекта. Если правило не соответствует условию, все следующие, связанные правила, пропускаются.
‘type|T=MIME-тип [=code]’
(принудительно установить MIME тип)
Принудительно установить MIME-тип целевого файла в MIME-тип. К примеру, это можно использовать для имитации mod_alias директивы ScriptAlias, которая принудительно устанавливает для всех файлов внутри отображаемого каталога MIME тип равный «application/x-httpd-cgi».
‘nosubreq|NS [=code]’
(используется только в случае не внутреннего подзапроса)
Этот флаг дает команду механизму преобразований пропустить директиву, если текущий подзапрос является внутренним подзапросом. К примеру, внутренние подзапросы в Apache происходят тогда, когда mod_include пытается получить информацию о возможных файлах по умолчанию для каталогов (index.xxx). При подзапросах это не всегда полезно и даже иногда вызывает проблему в работе набора директив преобразований. Используйте этот флаг для исключения некоторых правил.
‘nocase|NC [=code]’
(не учитывать регистр)
Это делает Шаблон нечувствительным к регистру, т.е. нет различий между ‘A-Z’ и ‘a-z’, когда Шаблон применяется к текущему URL.
‘qsappend|QSA [=code]’
(добавлять строку запроса)
Этот флаг указывает механизму преобразований на добавление, а не замену, строки запроса из URL к существующей, в строке подстановки. Используйте это когда вы хотите добавлять дополнительные данные в строку запроса с помощью директив преобразований.
‘noescape|NE [=code]’
(не экранировать URI при выводе)
Этот флаг не даёт mod_rewrite применять обычные правила экранирования URI к результату преобразования. Обычно, специальные символы (такие как ‘%’, ‘$’, ‘;’, и так далее) будут экранированы их шестнадцатиричными подстановками (‘%25’, ‘%24’, и ‘%3B’, соответственно); этот флаг не дает это делать.
Если в подкаталогах в .htaccess нет ни одной директивы модуля mod_rewrite, то все правила преобразования наследуются из родительского каталога.
При наличии в файле .htaccess каких-либо директив модуля mod_rewrite не наследуется ничего, а состояние по умолчанию выставляется таким же, как в главном конфигурационном файле веб-сервера (по умолчанию «off»). Поэтому, если нужны правила преобразования для конкретного каталога, то нужно еще раз вставить директиву «RewriteEngine on» в .htaccess для конкретного каталога.
При наследовании правил из верхних каталогов и добавлении к ним новых свойственных только данному каталогу — необходимо выставить в начале следующее: «RewriteEngine on» и «RewriteOptions inherit» — последняя директива сообщает серверу о продолжении.
Индексные страницы
Когда пользователь заходит на хост, например, http://gentoo.org, принято, что открывается индексный файл index.* , а при его отсутствии отображается либо содержимое каталога, либо отдается ошибка 403 FORBIDDEN (если отключена опция «просмотр директорий»).
За листинг файлов отвечает директива Indexes (показывать посетителю список файлов, если в выбранном каталоге нет файла index.html или его аналога).
Иногда нужно сделать так, чтобы в случае отсутствия в каталоге файла, который показывается по умолчанию, листинг, то есть список файлов в каталоге, не выдавался. В этом случае добавим в .htaccess такую строчку:
А чтобы выдавал листинг, нужно:
Если же понадобится разрешить просматривать список файлов, но чтобы при этом чаcть файлов определенного формата не отображалась, то запишем:.
Выдает листинг каталога, т.е. его содержание со всем содержанием, за исключением файлов-скриптов PHP и Perl.
Если ваш веб-сайт построен на скриптах, то в качестве индексных часто могут использоваться файлы с другими расширениями. Указать эти файлы можно с помощью директивы DirectoryIndex .
Если же вы хотите что бы при обращении к каталогу открывался не index.html, а, например, файл htaccess.php или /cgi-bin/index.pl:
Обработка ошибок
В ходе работы сервера иногда возникают ошибки, однако правильнее называть их не сбоями в работе сервера, а стандартными кодами возврата, оговоренными в стандарте HTTP_RFC2616. Вообще, в RFC ошибки называются «Status Codes«, но мы их будем называть именно ошибками — так привычнее.
Код возврата — это трехзначное число, на основании которого можно судить о том, насколько успешно был обработан запрос. Код возврата начинающиеся на 1,2,3 считаются успешными, остальные причисляются к разряду ошибок.
При возникновении ошибки 4xx или 5xx посетитель Вашего сайта увидит в браузере сообщение от сервера, которое вряд ли можно назвать предельно понятным рядовому пользователю. Apache предоставляет возможность выдать вместо аскетичного технического текста, не изобилиющего деталями, свою страницу, где Вы можете человеческим языком объяснить пользователю, что произошло и что делать.
Пример переопределения страниц ошибок приведен ниже:
Более подробно об обработке ошибок можно прочитать в документации по Apache на странице «Custom error responses» .
Кодировка
Иногда браузер пользователя не может корректно определить тип кодировки выдаваемого документа. Для решения этой проблемы используемая кодировка указывается в настройках Web-сервера Apache и заголовке передаваемого документа. Причем для корректного распознания эти кодировки должны совпадать. На наших серверах по умолчанию используется кодировка cp1251
В HTML для указания кодировки используется тег:
Наиболее часто встречаются типы кодировки для русского языка передаваемые в заголовке документа:
|
Теперь рассмотрим указание кодировки по умолчанию через .htaccess. AddDefaultCharset задает дефолтную таблицу символов (кодировку) для всех выдаваемых страниц на веб-сервере Apache. Указываем кодировку на все файлы, в которой по умолчанию получает документы браузер:
При загрузке файла на сервер возможна перекодировка. Указываем, что все получаемые файлы будут иметь кодировку windows-1251, для этого напишем:
Если необходимо отменить перекодировку сервером файлов:
Управление доступом
Очень часто возникает необходимость запретить доступ к определенным файлам или папкам для определенных групп пользователей. В Web-сервере Apache есть встроенные средства для решения данной проблемы.
Для запрета или разрешения доступа ко всем файлам и папкам в текущей и во всех вложенных директориях используется директива Order, синтаксис ее очень прост:
В зависимости от того, в каком порядке указаны директивы, меняется логика работы сервера. В случае, если Deny,Allow, то запрещается доступ со всех IP кроме оговоренных, в случае, если Allow,Deny, разрешается доступ со всех IP кроме оговоренных. Далее должны идти секции описания для доступа и запрета. Ключевое слово all означает со всех IP
Например, мы хотим запретить (блокировать) доступ с IP 81.222.144.12 и 81.222.144.20 и разрешить всем остальным. Нам необходимо добавить в .htaccess следующий код:
Для обратной ситуации, когда мы хотим запретить доступ со всех IP кроме 81.222.144.12 и 81.222.144.20, нам необходимо добавить в .htaccess следующий код:
Запрет или разрешение на доступ можно указывать не только на все файлы, но так же можно указывать на отдельный файл или группы файлов. Например, мы хотим запретить доступ всех пользователей, кроме IP 81.222.144.12, к файлу passwd.html, который расположен в текущей директории:
Так же можно запретить или разрешить доступ к определенной группе файлов. Например, к файлам с расширением «.key«:
Паролирование директорий
.htaccess можно также использовать для установки пароля на доступ к определенным папкам, файлам и группам файлов. Приведем рабочий пример, а потом поясним все содержимое:
Данный файл нужно положить в ту директорию, на которую мы хотим поставить пароль.
Директива AuthName выводит сообщение при запросе пароля, все сообщение необходимо писать в одну строчку, синтаксис директивы тривиален:
Директива AuthType выбирает тип аутентификации. Возможны следующие типы: Basic или Digest. Второй может не поддерживаться некоторыми браузерами, поэтому пользоваться им не рекомендуется
AuthUserFile указывает имя файла с паролями для аутентификации пользователей (пароли в этом файле будут шифрованными). Путь к файлу с паролями задается относительно корня веб-сервера. Храните файл с паролями в папке, доступ к которой закрыт для пользователей (желательно поместить этот файл вне иерархии вашего веб-сайта).
Приведем пример для доступа определенных пользователей из файла с паролями .htpasswd
Также, как и с запретом доступа по IP, здесь можно использовать расширение . Ниже приведены два примера: установки пароля на один определенный файл и на группу файлов.
Следует помнить, что при таком ограничении доступа пароли передаются по каналам связи в открытом виде и при определенных обстоятельствах могут быть перехвачены злоумышленниками. Поэтому в целях безопасности рекомендуется организовывать доступ к закрытым областям веб-сайта через защищенное SSL-соединение.
Указание опций PHP
Директивы для конфигурирования PHP можно размещать не только в файле php.ini, но также и в конфигурационных файлах Apache для вашего сайта – .htaccess. Это позволяет проводить тонкую настройку php для разных директорий.
Для работы с PHP в конфигурационных файлах Apache доступны 4 директивы: php_value, php_flag, php_admin_value, php_admin_flag, которые отличаются значимостью, типом устанавливаемых значений и местом применения.
Директивы php_admin_value, php_admin_flag выставляются только в файле httpd.conf, так что нам они не интересны. По сути, данные директивы переопределяют значение остальных директив.
Директива php_flag служит для установки логических значений директив в php.ini, в то время как директива php_value служит для установки строковых и числовых значений директив php.ini, т.е. любых типов значений, за исключением логических.
Синтаксис директив очень прост:
Приведем перечень наиболее часто используемых директив
mysql.default_host
Пример: php_value mysql.default_host localhost
mysql.default_user
Пример: php_value mysql.default_user alexey
mysql.default_password
Пример: php_value mysql.default_password Hry5Gw2
display_errors
Пример: php_flag display_errors 0
display_startup_errors
Пример: php_flag display_startup_errors 0
error_reporting
Пример: php_value error_reporting 32767
auto_prepend_file
Пример: php_value auto_prepend_file /www/server/prepend.php
auto_append_file
Пример: php_value auto_append_file /www/server/append.php
sendmail_from
Пример: php_value sendmail_from root@beget.com
user_agent
Пример: php_value user_agent “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”
Например, для вывода всех сообщений об ошибках генерируемых php в .htaccess нужно прописать следующие строки:
Для запрещения выполнения php в текущей директории и во всех вложенных, необходимо в .htaccess прописать следующие строки:
Удачной работы! Если возникнут вопросы — напишите в комментариях.