Htaccess — Использование .htaccess для ЧПУ в xammp и open server


Содержание

Nginx — htaccess, как конвертировать

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

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

Стоит ли использовать аналог htaccess на сервере Nginx

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

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

Как конвертировать опции htaccess для серверов Nginx

Существует специальный Nginx converter — это онлайн-сервис, который необходим для перевода синтаксиса файла htaccess в синтаксис конфигурационного документа сервера Nginx. То есть все, что вам понадобится сделать, — это ввести директивы файла htaccess в конвертер, затем скопировать результат, и вставить в конфигурации Nginx. При этом важно, чтобы файл Apache, с которого вы копируете данные, был рабочим. Протестируйте его на локальном сервере. Если возникает ошибка 500, значит его нельзя использовать для перевода — в нем содержится ошибка.

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

Если вы захотите добавить в Nginx свои страницы с ошибками, что весьма правильно, то вместо ErrorDocument, вам нужно будет писать, к примеру, вот так: error_page 404 http://domen.ru/error/404.htm. И так вы сможете написать для каждой страницы. Только не забудьте предварительно создать страницы с ошибками. Только потом вы сможете прописать для них путь.

В качестве защиты папок в htaccess часто указывали директиву для запрета листинга каталогов. Для этого писали следующую опцию: Options -Indexes. В Nginx она будет выглядеть совсем по-другому: autoindex off. А для активации листинга укажите вместо off слово on. К сожалению, директиву IndexIgnore через конвертер у вас перевести не получится. Потому вы не сможете при открытом листинге скрывать какие-либо файлы на сервере Nginx. Зато вы сумеете указать свой вариант индексного файла. Для этого нужно прописать вместо DirectoryIndex одно слово: index, и к нему добавить перечень файлов, которые нужно считать индексными.

Некоторые директивы так же легко переводить в Nginx, как и опцию DirectoryIndex. К примеру, директива определения основной кодировки для сайта AddDefaultCharset. Она нужна для того, чтобы все браузеры видели сайт в одной кодировке. Настройка этой опции исключит появление несвязных закорючек на страницах вашего ресурса. Кроме того, вы сможете создать версии портала на другом языке. Чтобы сделать это в Nginx, нужно указать директиву Charset и название кодировки.

Если вы хотите заблокировать доступ к сайту только для некоторых пользователей, то необязательно прописывать сначала Allow from all, а потом указывать исключения. В Nginx достаточно прописать каждый IP-адрес в отдельной строчке после директивы Deny. Например:

deny 81.222.144.12;
deny 81.222.144.20;

А если нужно разрешить доступ только некоторым IP-адресам, то нужно сначала его запретить для всех при помощи директивы Deny all. А потом так же, как и с deny в предыдущем примере: указать в каждой строке по одному IP-адресу, только уже с директивой Allow. Для блокировки какого либо-файла или папки вместо тегов вам следует писать сначала опцию location, а затем в скобках <> указывать директивы deny и allow. Например, вот как будет выглядеть блокировка файла passwd.html для всех, кроме IP-адреса 81.222.144.12:

location /passwd.html <
deny all;
allow 81.222.144.12;
>

А что касается установки пароля на определенные файлы, то в Nginx это делать еще проще, чем если бы прописывали эту опцию в документе htaccess. Вместо того, чтобы указывать четыре директивы, вам необходимо будет указать всего две. В первой строчке необходимо написать опцию auth_basic и в кавычках указать обращение к пользователю, который хочет авторизоваться. А во второй auth_basic_user_file вам следует написать путь к файлу с паролями, которые необходимы для аутентификации.

Единственное, с чем вам придется изрядно помучиться — это перевод директив модуля mod_rewrite в формат настроек Nginx. С этим действительно все сложно, поскольку вам придется изучить синтаксис Nginx, чтобы понять, как активировать на сервере перенаправление URl. В любом случае, вам понадобится директива location, которая нужна для указания адреса переадресации. В скобках вместо директивы RewriteCond, обозначающей условия перенаправления ссылки, нужно писать if. А вместо правила переадресации RewriteRule пишите просто Rewrite.

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

.htaccess не работает на локальном хосте с XAMPP

Я использую XAMPP, но не могу использовать файл .htaccess на локальном хосте. я пытаюсь так много раз .. Интернет работает хорошо. но локальный хост показывает [запрошенный URL не найден на этом сервере]

Моя корневая папка настоящая

6 ответов

Просто была похожая проблема

Решил, отметив httpd.conf

Стоит помнить, что я попытался (из ответа Марка) «положить мусор в .htaccess», который действительно приводил к ошибке сервера — но даже если он читался, на него не действовали из-за отсутствия допускается переопределение.

В файле conf /extra /httpd-vhosts.conf добавьте строку AllowOverride All для всех сайтов, с которыми у вас возникли проблемы

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

[ОСТАНОВИТЕ свой экземпляр сервера Apache. Убедитесь, что он не работает!]

1) переместить сервер /установку apache в папку, в которой нет длинных имен файлов и пробелов

2) проверьте httpd.conf в папке install \ conf и найдите AccessFileName . Если это .htaccess , измените его на имя файла, которое принимает Windows (например, conf.htaccess )

3) Дважды проверьте, что ваш htaccess-файл прочитан: добавьте в него какой-то непонятный мусор и запустите сервер: вы должны получить Ошибка 500 . Если вы этого не сделаете, файл не читается, повторно посетите файл httpd.conf (если он выглядит нормально, проверьте, является ли это единственным файлом, который определяет htaccess и его местоположение, и он находится в одном месте — внутри файла — только ; также проверьте, доступны ли оба файла httpd.conf и htaccess: не зашифрованы, права доступа к файлу не ограничены, диск /путь доступны — и нет длинных пути к папке и имен файлов-)
Снова остановите Apache, затем продолжите:
4) Если у вас есть IIS в вашей системе, остановите его (удалите его, если можете) из services.msc

5) Добавьте следующее в начало вашего действительного файла htaccess:
ПереписатьEngine On
RewriteLog «/path/logs/rewrite.log» # убедитесь, что путь есть!
RewriteLogLevel 9

6) Очистите папку [apache] \ logs (если вы используете другую папку, то эта :))
7) Проверьте правильность и корректность следующих записей:
Приложение действия /x-httpd-php «c: /your-php5-path/php-cgi.exe»
LoadModule php5_module «c: /your-php5-path/php5apache2.dll»
LoadModule rewrite_module modules /mod_rewrite.so
Избегайте длинных путей и пробелов в именах папок для phpX установить тоже!

8) НАЧАТЬ сервер Apache

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

У меня была похожая проблема. Но проблема была в имени файла .htaccess, потому что Windows не позволяет имени файла начинаться с «.», Решение было переименовать файл с помощью команды CMD. «переименовать c: \ xampp \ htdocs \ htaccess.txt .htaccess»

Для пользователей Windows обязательно внимательно посмотрите на этот раздел.

Модуль mod_rewrite использует механизм перезаписи на основе правил, основанный на Анализатор PCRE с регулярными выражениями для быстрой перезаписи запрошенных URL.

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

ЧПУ через .htaccess – проще, чем кажется!

ЧПУ неотъемлемая часть приличного сайта! ЧПУ с помощью .htaccess – это простое, удобное и красивое решение для большинства самописных сайтов!

1. Один GET-параметр

Хотим URL вида: site.ru/primer/, сервер через .htaccess будет обрабатывать команду – site.ru? >

2. Два и более GET-параметров

Хотим URL вида: site.ru/cat/dev/, сервер через .htaccess будет обрабатывать команду – site.ru? >

В данных примерах для ЧПУ могут использоваться только латинские символы неограниченного количества, если Вы допускаете использование заменителей пробелов (дефис, нижнее подчеркивание), цифр, то регулярное выражение следует заменить на ([a-z0-9\-\_]+).

Не забудьте добавить наферх в файл htaccess команду:

Проверить ответ сервера на сайте удобно: http://www.bertal.ru/.

Полезная информация о 301 редиректе с помощью .htaccess можно найти в моей публикации – тут.

Yii Framework

Openserver. htaccess. assets

Openserver. htaccess. assets

Сообщение acidflash » 2020.07.09, 22:33

Приложение в упор не может увидеть ссылки /assets/css-compress/0660ed2ff1f982112a478b760e9d5846.css?v=1499624288 — 404, вместо этого доступно frontend/web/assets/css-compress/0660ed2ff1f982112a478b760e9d5846.css?v=1499624288

если в браузере набрать имядомена/assets/, то тыкается в каталог frontend/web/assets/, здесь все верно.
Ниже мой htaccess корневой директории

RewriteCond % !-f
RewriteRule ^assets/(.*) frontend/web/assets/$1 [L]
# /admin -> /backend/web/
RewriteCond % ^/admin
RewriteRule ^admin\/?(.*) /backend/web/$1

# /frontend/web/$1
RewriteCond % !^/(frontend/web|backend/web|admin)
RewriteRule (.*) /frontend/web/$1

# Если frontend запрос
RewriteCond % ^/frontend/web
RewriteCond % !-f
RewriteCond % !-d
RewriteRule . /frontend/web/index.php

# Если backend запрос
RewriteCond % ^/backend/web
RewriteCond % !-f
RewriteCond % !-d
RewriteRule . /backend/web/index.php

htaccess каталога /frontend/web

RewriteEngine on
# if a directory or a file exists, use the request directly

RewriteCond % !-f
RewriteCond % !-d
# otherwise forward the request to index.php
RewriteRule . index.php

видимо какая-то тривиальная проблема, но никак не решается, прошу помощи

Re: Openserver. htaccess. assets

Сообщение acidflash » 2020.07.09, 22:56

Re: Openserver. htaccess. assets

Сообщение girmate » 2020.07.10, 15:05

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

Выбрать модули: Apache-PHP-7 + PHP-7.0

Кодировка (MySQL сервер): utf_unicode_ci

Включить XDebug: OS-Конфигурация-PHP-7 в конце файла найти расскоментить и исправить строки:
zend_extension=»%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll»
xdebug.default_enable = 1
xdebug.profiler_enable_trigger = 1
xdebug.remote_enable = 1
xdebug.remote_port = 9000

Для браузера скачать расширение слушателя дебаггера (Xdebug helper):
https://chrome.google.com/webstore/deta . nfo-dialog

После установки PhpStorm добавить в закладки PhpStorm
имя — IDE, название PhpStorm,
путь(взять из свойств ярлыка к PhpStorm): C:\Program Files\JetBrains\PhpStorm 2020.1.4\bin\phpstorm64.exe

Создать новый проект в PhpStorm (либо клонировать)
При создании указать дирректорию к новому проекту!
Настроить git и GitHub в PhpStorm
В терминале:
composer self-update
composer global require «fxp/composer-asset-plugin:^1.2.0»
И скачать фреймворк:
composer create-project yiisoft/yii2-app-advanced d:\OpenServer\domains\site.loc
(запросит токен)

Выполнить для закачки на GitHub (единожды):
git config —global user.email ******e@yandex.ru
git config —global user.name «Your Name»
Затем в PhpStorm меню VCS — Import into Version Control — Share project on GitHub

В OpenServer создать в доменах ручное управление и прописать пути с frontend/web и backend/web/.

Re: Openserver. htaccess. assets

Сообщение girmate » 2020.07.10, 15:07

Options +FollowSymLinks
IndexIgnore */*

# if a directory or a file exists, use it directly
RewriteCond % !-f
RewriteCond % !-d

# otherwise forward it to index.php
RewriteRule . index.php

Все картинки показываются, ЧПУ-ссылки работают. Windows, Openserver.

PhpStorm запускаю из-под OpenServer — для этого создаю там ярлык. И тогда в windows никакие PATH прописывать не надо, работает git, composer прямо из терминала PhpStorm. Если при работе сайта на локальной машине есть секундная задержка при переходе по любой ссылке в проекте — установите патч от Microsoft на приоритетное использование протокола Ipv4 (но не тот что предлагает OpenServer). И тогда сайт будет работать мгновенно (на локальной машине).


Если что непонятно из того, что я сказал (по моей заметке) — спрашивайте.

Re: Openserver. htaccess. assets

Сообщение images » 2020.11.11, 22:44

PhpStorm запускаю из-под OpenServer — для этого создаю там ярлык. И тогда в windows никакие PATH прописывать не надо, работает git, composer прямо из терминала PhpStorm. Если при работе сайта на локальной машине есть секундная задержка при переходе по любой ссылке в проекте — установите патч от Microsoft на приоритетное использование протокола Ipv4 (но не тот что предлагает OpenServer). И тогда сайт будет работать мгновенно (на локальной машине).

Можете подробнее описать что значить запустить phpStorm из -под OpenServer.

Re: Openserver. htaccess. assets

Сообщение dsamsonov » 2020.11.12, 20:45

Re: Openserver. htaccess. assets

Сообщение girmate » 2020.11.13, 20:26

PhpStorm запускаю из-под OpenServer — для этого создаю там ярлык. И тогда в windows никакие PATH прописывать не надо, работает git, composer прямо из терминала PhpStorm. Если при работе сайта на локальной машине есть секундная задержка при переходе по любой ссылке в проекте — установите патч от Microsoft на приоритетное использование протокола Ipv4 (но не тот что предлагает OpenServer). И тогда сайт будет работать мгновенно (на локальной машине).

Можете подробнее описать что значить запустить phpStorm из -под OpenServer.

Цукерберг рекомендует:  Новости - Кто может помочь с новостным приложением

Открываете меню OpenServer. Там есть раздел настроек с кучей вкладок. Там находите вкладку «Закладки» (пишу по памяти). Вписываете:
Имя: PhpStorm (или как угодно)
Категория: IDE (или как угодно, чтобы было понятно Вам)
Путь: например, C:\Program Files\JetBrains\PhpStorm 2020.2.4\bin\phpstorm64.exe (обычно название папки \PhpStorm 2020.2.4\ будет зависеть от версии PhpStorm, поэтому подкорректируйте).

Все, настройка готова. Запускаете OpenServer. Идете опять в меню OpenServer и ищите там свою вкладку IDE, нажимаете и там внутри будет одна вкладка с названием PhpStorm. Открываете ее и, если правильно прописали путь — запустится PhpStorm. OpenServer автоматически передаст ему все переменные окружения, подскажет где и что. Вам только дальше уже настраивать git, БД из-под PhpStorm. В общем, все упрощается в разы. И да, теперь можно писать команды для того же composer прямо в командной строке PhpStorm’a — его он тоже начнет видеть.

Будут еще вопросы, пишите. Наверное, в будущем я эту инструкцию выложу для тех, кто в Windows сидит в отдельную тему. А то тут много линуксоидов, но я линукс еще не понимать ((.

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

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

Выбрать модули: Apache-PHP-7 + PHP-7.1

Кодировка (MySQL сервер): utf_unicode_ci

Включить XDebug: OS-Конфигурация-PHP-7 в конце файла найти расскоментить и исправить строки:
zend_extension=»%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll»
xdebug.default_enable = 1
xdebug.profiler_enable_trigger = 1
xdebug.remote_enable = 1
xdebug.remote_port = 9000

Для браузера скачать расширение слушателя дебаггера (Xdebug helper):
https://chrome.google.com/webstore/deta . nfo-dialog

После установки PhpStorm добавить в закладки PhpStorm
имя PhpStorm, категория — IDE,
путь(взять из свойств ярлыка к PhpStorm):
C:\Program Files\JetBrains\PhpStorm 2020.2.4\bin\phpstorm64.exe

Создать новый проект в PhpStorm (либо клонировать)
При создании указать дирректорию к новому проекту!
Настроить git и GitHub в PhpStorm
В терминале:
composer self-update
composer global require «fxp/composer-asset-plugin:^1.2.0»
И скачать фреймворк:
composer create-project yiisoft/yii2-app-advanced d:\OpenServer\domains\site.loc
(запросит токен)

Выполнить для закачки на GitHub (единожды):
git config —global user.email ******e@yandex.ru
git config —global user.name «Your Name»
Затем в PhpStorm меню VCS — Import into Version Control — Share project on GitHub

В OpenServer создать в доменах ручное управление и прописать пути с frontend/web и backend/web/.

htaccess

Что такое .htaccess?

Файл .htaccess (англ. hypertext access) используется для простой и удобной настройки веб-сервера на котором хранится сайт пользователя. Соответственно меняя настройку веб-сервера, мы сможем поменять работу сайта. Как правило, файл .htaccess находится в корневом каталоге, а его действие распространяется на весь сайт и на все подкаталоги. Если же в другом каталоге содержится свой .htaccess, то он будет действовать только на свой каталог и подкаталоги.

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

Где находиться файл .htaccess?

Обычно он располагается в коневом каталоге сайта. Иногда, в различных CMS может находится файл htaccess.txt, который никак не воспринимается сервером и ни на что не влияет. Чтобы он начал работать нужно его переименовать в .htaccess. Если это не получится сделать на вашем компьютере, то зайдите на свой сервер через FTP-клиент, и переименуйте файл прямо сервере.

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

Как проверить работает ли .htaccess?

Все просто, напишите в первой строчке этого файла любое слово (например YAROBOT), сохраните файл и замените им находящийся на сервере. Если сайт продолжит работать, то .htaccess в данный момент не работает. Если же появится ошибка 500 Internal Server Error, то это значит, что веб-сервер не смог понять команду (YAROBOT) и выдал ошибку. Этот факт подтвердит, что работа .htaccess на сервере поддерживается и включена в данный момент. Чтобы вернуть сайту работоспособность удалите строчку с YAROBOT.

Далее мы поговорим о всем полезном, что можно сделать с помощью данного файла.

Правильный 301 редирект через файл .htaccess

Важно! Если вы хотите, чтобы ваш редирект работал, нужно перед строками, которые рекомендуются ниже по тексту, обязательно прописать

301 Редирект с одной страницы на другую (или сайт)

Для этого в файл .htaccess вносим следующие строки:

Redirect 301 /старая-страница.html http://сайт.рф/новая-страница.html

RedirectPermanent /старая-страница.html http://сайт.рф/новая-страница.html

301 Редирект с www-сайта на сайт без www

Например перенаправление с http://www.site.com на http://site.com. Это очень полезная вещь, часто используется в СЕО

Options +FollowSymLinks
RewriteEngine On
RewriteCond % ^www.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

Обратный редирект с домена без www на домен с www

Перенаправление с http://site.com на http://www.site.com (не советуем использовать)

Options +FollowSymLinks
RewriteEngine On
RewriteCond % ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Редирект всех посетителей со старого сайта на новый

Как добавить .html в конце URL?

Чтобы при вводе site.com/page или site.com/page/ происходило перенаправление на site.com/page.html пишем в .htaccess следующее:

Как убрать .html в конце URL?

Обратный редирект с site.com/page.html на site.com/page

Как убрать слэш в конце URL?

Например было site.com/page/, стало site.com/page

301 Редирект с одного раздела на другой?

Перенаправление всех страниц одного раздела site.com/razdel-1/razdel-2/page на на страницы другого раздела site.com/razdel-1/page

RewriteRule ^blog/raznoe/(.*)$ http://site.ru/blog/$1 [R=permanent,L]

301 Редирект при переезде со старого домена на новый

Следующее правило корректно перенаправит посетителей с каждой конкретной страницы старого сайта на такую же страницу на новом сайте. Например со страницы oldsite.com/page на newsite.com/page

RewriteCond % ^www.oldsite.com$ [NC,OR]
RewriteCond % ^test.oldsite.com$ [NC]
RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]

Правильное изменение страниц ошибок через .htaccess

Когда пользователь хочет увидеть сайт (отправляет запрос на сервер хостера), то сервер возвращает ему ответ с кодом. Коды 1-399 свидетельствуют о нормальной работе сервера, а коды 400-599 сообщают об ошибке сервера (коды всех ошибок смотрите в спец. статье). Например, если сервер с вашим сайтом перегружен, или у него происходит перезагрузка, то пользователь увидит непонятный ему текст (например, 500 Internal Server Error), подумает, что сайт больше не будет работать и больше никогда на него не вернется. Чтобы вместо стандартной страницы ошибки (непонятно для пользователя) показать ему вашу отдельную страницу, на которой будет например, сообщение о том, что сайт временно не работает, но позже восстановит свою работу и на него обязательно стоит вернуться (сайт КиноПоиск при перегрузки серверов выдает сообщение «Матрица перезагружается. » и соответствующую картинку). Наиболее распространенным решением является составление собственной страницы вместо стандартной 404-ошибки. Эта ошибка показывается пользователю, если введен адрес несуществующей страницы. Думающие вебмастеры, создают свою страницу вместо непонятной стандартной, на которой пишут, что человек перешел по несуществующей ссылке и предлагают поискать нужную информацию на сайте, а не уйти с него. Пример нашей 404-страницы можно увидеть здесь. Чтобы показывать пользователям свою страницу ошибки вместо стандартной, нужно создать отдельную страницу (например http://yoursite.com/404.html) и добавить соответствующий код в файл .htaccess Вот примеры кода, который нужно добавить:

ErrorDocument 400 http://yoursite.com/400.html
ErrorDocument 404 http://yoursite.com/404.html
ErrorDocument 500 http://yoursite.com/500.html

Если вы хотите подставить другую страницу вместо ошибки 403, то нужно указывать еще текстовое сообщение, которое будет показано, например:

ErrorDocument 403 «Sorry can’t allow you access today, see you later alligator :)»

Настройки безопасности сайта через файл .htaccess

Файл .htaccess дает большие возможности для улучшения безопасности сайта. Наиболее популярные мы сейчас перечислим:

Защита сайта от скриптовых инъекций

#Включает отслеживание сим-ссылок
Options +FollowSymLinks
#Запускает url_rewriting
RewriteEngine On
#Блокирует все ссылки, содержащие

Настройка файла htaccess

Дата публикации: 2012-07-09

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

Следует отметить, что файлы .htaccess не работают в системах на базе Windows, хотя их можно отредактировать и выгрузить на совместимый веб-сервер, а в системах на базе Linux они скрыты по умолчанию.

Для локальной работы с файлами htaccess можно использовать XAMPP (или MAMP) на Mac – пакет, который устанавливает и конфигурирует Apache, PHP и MySQL. Для редактирования файлов .htaccess на Mac нужно применить текстовый редактор, позволяющий открывать скрытые файлы, такой как TextWrangler.

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

Настройка, измененная в файле .htaccess, отменит ту же настройку в основном файле конфигурации для содержащего этот файл каталога, а также для всех его подкаталогов.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

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

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

Переадресация и перезапись URL

Файлы .htaccess широко используются для выполнения переадресации или перезаписи URL’ов. Это очень удобно при оптимизации SEO после смены доменного имени, или при реорганизации файловой структуры, или для сокращения длинного некрасивого URL’а и превращения его в более удобный и запоминающийся.

Переадресация

Переадресация может быть совсем простой, как тут:

Тут код статуса HTTP устанавливается на 301 (постоянно меняемый) и переадресовывает все запросы к old.html прямиком на new.html. Для совмещения URL’а с переадресацией мы применяем регулярное выражение, что даёт нам отличный контроль над применением только верного URL’а, но усложняет конфигурацию и управление ей. Требуется полный URL переадресовываемого ресурса.


Перезапись

Перезапись может быть простой, как здесь:

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

Для обновления того, что отображено в адресной строке браузера посетителя, можно использовать метку R в конце RewriteRule, например:

Метка r вызывает внешнее перенаправление, вот почему тут приведен полный URL (пример URL здесь) новой страницы. Также при использовании метки можно определить код состояния. Таким образом обновляется адресная строка браузера пользователя.

Одним из возможных использований перезаписи URL, упомянутых мной в начале этого раздела – это сделать некрасивые URL’ы (содержащие информацию строкового запроса) более дружественными для посетителей и поисковых движков. Давайте рассмотрим это в действии:

Это правило позволит посетителям использовать такой URL, как products/turntables/technics/sl1210, и преобразовать его в product.php?cat=turntables& brand=technics&prod=sl1210. Круглые скобки между косыми чертами в вышеприведенном регулярном выражении – это собирающие группы – мы можем применять любую из них, как $1, $2 и $3 соответственно. Символьный класс [^/]+ в круглых скобках означает совпадение любого символа один или более раз, кроме косой черты

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

Создание необычных страниц ошибок

Стандартную страницу ошибки 404 демонстрировать больше не «круто». На многих сайтах пользуются возможностью, предоставляемой ошибкой file not found, для того, чтобы внести в нее некоторую долю юмора, хотя подразумевается, что худо-бедно, но страница с ошибкой 404 должна соответствовать стилю и теме любой другой страницы сайта.

Что очень близко связано с перезаписью URL’а, с помощью файла .htaccess легко обслуживать пользовательскую страницу ошибки 404 вместо стандартной:

Это – всё, что нам нужно; при возникновении ошибки 404 всегда отображается указанная страница. Еще мы можем конфигурировать страницы для отображения многих других ошибок сервера.

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

С помощью файлов .htaccess можно включить защиту любого файла или каталога паролем — для всех пользователей или в зависимости от домена или IP адреса. Это, помимо всего, и есть один из основных методов их применения. Чтобы предотвратить доступ ко всему каталогу, просто создаём файл .htaccess, содержащий следующий код:

Затем этот файл нужно поместить в каталог, требующий защиты. Указатель AuthName определяет сообщение, которое следует отобразить в диалоговом окне «имя пользователя/пароль», AuthUserFile должен послужить путём к файлу .htpasswd. Указатель Require уточняет, что только авторизовавшиеся пользователи могут получить доступ к защищённому файлу, в то время как AuthType установлен на Basic.

Чтобы защитить некий файл, можно обернуть вышеупомянутый код в указатель files, определяющий защищённый файл:

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Нам также нужен файл .htpasswd для тех типов аутентификации, где содержится список разделённых двоеточием имён пользователей и зашифрованных паролей, требуемых для получения доступа к защищённому ресурсу(ам). Этот файл нужно сохранить в каталог, недоступный из сети. Существует ряд сервисов, которые можно использовать для автоматического генерирования этих файлов, так как пароли должны сохраняться в зашифрованном виде.

Блокирование доступа к определённым объектам

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

Указатель order говорит Apache, в каком порядке оценивать директивы allow/deny. В данном случае первым оценивается allow, а за ним deny. Указатель allow from all оценивается самым первым (даже если появляется после deny) и разрешаются все IP, далее, если IP клиента соответствует указанному в параметре deny, доступ запрещается. Таким образом, доступ разрешается всем IP, кроме указанного. Следует отметить, что, кроме того, можно лишить доступа целые блоки IP, предоставив более короткий IP, например, 192.168.

Для запрета запросов с агента пользователя можно сделать следующее:

В этом примере любой клиент со строкой HTTP_USER_AGENT, начинающейся с OrangeSpider (вредный бот), перенаправляется обратно к адресу, с которого был инициирован. Регулярное выражение сопоставляет любой одиночный символ (.) ноль или более раз (*) и переадресовывает к переменной среды %. Метка l, которую мы здесь применили, отдает Apache указание рассматривать это соответствие как последнее правило, и, таким образом, до перезаписи прочие правила выполняться не будут.

Вмешиваемся в режим визуализации IE

Наряду с контролем над тем, как сервер отвечает на определённые запросы, можно сделать кое-что с браузером пользователя, например, вынудить IE отображать страницы, используя определённый движок визуализации. Так, можно применить модуль mod_headers, если тот присутствует, для установки заголовка X-UA-Compatible:

Путем добавления этой строки в файл .htaccess IE отдается указание применить самый высокий доступный режим отображения. Как показывает HTML5 Boilerplate, еще можно избежать установки этого заголовка в не требующие его файлы, использовав параметр FilesMatch следующим образом:

Осуществление кэширования

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

Если вы проверяете свой сайт на Google PageSpeed или Yahoo’s YSlow и получили сообщение об установке долгосрочных заголовков, то вот как это можно исправить:

Разные параметры ExpiresByType можно установить для любого контента, перечисленного в применяемом вами инструменте исполнения, или чего угодно, где нужно управлять кэшированием. Первый указатель, ExpiresActive on, просто гарантирует, что генерация Expires headers включена. Эти указатели зависят от Apache, загружающего модуль mod_expires.

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

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

Эта схема сжатия работает на новых версиях Apache (2.1+), применяющих модуль mod_filter. Он использует алгоритм DEFLATE для сжатия контента в зависимости от его типа, и в этом случае мы определяем text/html, text/css и text/javascript (которые, скорее всего, окажутся видами файлов, помеченных в PageSpeed/Yslow).

применить, используя параметр FilterDeclare – в данном случае COMPRESS. Затем перечисляем виды контента, для которого нам нужно использовать этот фильтр. Указатель FilterChain отдает команду серверу выстроить цепь фильтров на основе перечисленных нами параметров FilterProv >

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

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

Обычно веб-сервер применяет один из этих модулей в зависимости от того, какая версия Apache используется. Обычно вы знаете это заранее, но если создаётся универсальный файл .htaccess, который можно использовать на многих сайтах, или которым можно поделиться с другими людьми, и потому неизвестно, какие модули применить, то вы можете использовать оба вышеприведенных программных блока, обёрнутых в указатели IfModule module_name для того, чтобы использовался подходящий модуль и сервер не выдавал по 500 ошибок, если мы станем вдруг конфигурировать модуль, невнесенный в список. Вам нужно знать, что для хостов, работающих с большим количеством сайтов с единственного блока, сжатие отключают, поскольку при сжатии на сервере происходит небольшая потеря производительности CPU.

Заключение урока по настройке файла htaccess

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

На этом, урок по настройке файла htaccess, окончен надеюсь вам всё понравилось.

Автор: Dan Wellman

Редакция: Команда webformyself.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Хотите узнать, что необходимо для создания сайта?

Посмотрите видео и узнайте пошаговый план по созданию сайта с нуля!

Apache: настройки веб-сервера, файл .htaccess

Несколько слов о веб-сервере Apache

В основном Apache httpd используется в качестве основного веб-сервера и является самым массовым продуктом своего класса. Этот сервер обладает обширными возможностями конфигурации, является очень производительным и поддерживает все известные протоколы для работы веб-серверов. Специально для Apache созданы версии таких популярных языков программирования как Perl и PHP, а также этот сервер легко интегрируется с широко применяемыми базами данных (например, MySQL).

Главный сайт проекта находится по адресу httpd.apache.org, а основная документация по версии 1.3.хх доступна на странице httpd.apache.org/docs/.

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

Индексный файл

Индексный файл или файл-индекс это тот файл, который открывается по умолчанию при обращении пользователя через веб к каталогу, а не к конкретному файлу. Например, ваш посетитель запросит адрес //ваш_домен/catalogue/ , где catalogue — название каталога. Индексный файл это тот файл, который будет показан пользователю при обращении к каталогу без указании имени конкретного файла в нем.

По умолчанию индексными файлами являются следующие: index.html , index.htm , index.php , index.php3 , index.phtml , index.shtml , default.htm или default.html . Если вы хотите чтобы первым открывался какой-то иной файл, нужно переопределить текущие значения.

Назначение и использование файла .htaccess

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

Файл .htaccess может быть размещен в корневом каталоге веб-сервера (прямо в каталоге www). В этом случае директивы из такого .htaccess действуют по всему веб-серверу. Также .htaccess может находиться и в конкретном подкаталоге сервера. Тогда директивы, которые указаны в этом файле, «перекрывают» действие директив из «основного» файла, который размещен в каталоге www или в любом каталоге более высокого уровня. То есть, действие директив из .htaccess наследуется сверху вниз, но не наоборот. Изменения, внесенные в файл, вступают в силу немедленно. Это связано с тем, что информация из .htaccess перечитывается при каждом обращении к веб-серверу Apache.

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

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

Как переопределить кодировку HTML-документов

Мы хотим «объяснить» веб-серверу что все html-документы, которые размещены на сервере, нужно «отдавать» клиенту в кодировке koi8-r, а не в windows-1251, как это сервер делает по умолчанию. Для этого поместим в .htaccess строку: AddType «text/html; charset=koi8-r» .html .htm .shtml

Получив такой .htaccess , веб-сервер Apache станет выдавать клиентскому браузеру заголовок, в котором будет указано, что документ имеет кодировку koi8-r.

Если на вашем ресурсе существуют html-документы в разных кодировках, (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), то вам, возможно, будет необходимо отключить принудительну выдачу заголовка с кодировкой windows-1251. Для этого в .htaccess добавляется строка: AddDefaultCharset Off

При этом соответствующая кодировка должна быть прописана на каждой html-странице в виде тега

Это примеры простейшего использования возможностей конфигурирования Apache через файл .htaccess.

Как закрыть директорию паролем

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

В каталоге, к которому хотим ограничить доступ по паролю, создаем файл .htaccess с такими директивами:

Путь /home/uXXXXX/.htpasswd обозначает полный путь к файлу паролей на диске нашего сервера. Если, например, вы поместите файл .htpasswd (в нем будут пароли) в домашний каталог, куда вы попадаете зайдя на сервер по FTP, то путь к этому файлу будет иметь вид /home/uXXXXX/.htpasswd, где uXXXXX — наименование вашей виртуальной площадки (например, u12345).

В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями, который мы создадим чуть позже. Если вы создаете файл .htaccess на своем компьютере, а не сразу на сервере при помощи текстового редактора, обратите внимание на то, что .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме.

Создаем файл паролей. Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл — воспользоваться программой, входящей в поставку Apache — htpasswd (на нашем сервере она находится в каталоге /usr/local/bin/, полный путь — /usr/local/bin/htpasswd).

Рассмотрим как создать файл паролей в unix shell прямо на сервере. Зайдем в shell, и будем выполнять следующие команды:

* htpasswd -mbc .htpasswd user1 sNQ7j9oR2w создаем новый файл .htpasswd, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке. Просьба обязательно заменить sNQ7j9oR2w на любой собственный пароль — здесь этот пароль указан только для примера
* htpasswd .htpasswd user2 добавляем в уже существующий файл .htpasswd пользователя user2, а пароль вводим вручную в ответ на соответствующий запрос программы

Если вы используете Windows и не хотите пользоваться unix shell для генерации паролей, можно загрузить Windows-версию программы htpasswd здесь и создать файл с паролями на своем компьютере, после чего загрузить его на сервер. Если у вас уже установлена Windows-версия Apache, файл htpasswd.exe можно найти в каталоге Program Files\Apache Group\Apache\bin\.

Итак, получите htpasswd.exe и используйте его для генерации паролей таким образом:

* htpasswd.exe -mc .htpasswd user1 создаем новый файл паролей htpasswd.exe, пароль и его подтверждение будут запрошены интерактивно
* htpasswd.exe -m .htpasswd user2 добавляем пользователя user2 в существующий файл паролей htpasswd.exe, запросив пароль интерактивно

После окончания заведения всех логинов файл нужно загрузить на сервер.

Как переопределить индексный файл

Ситуация: пользователь обратился к каталогу //www.ваш_домен.ru/price/. При таком запросе первым откроется и будет показан индексный файл. Если вы хотите переопределить индексный файл и сделать так, чтобы первым открывался не index.htm, а, например, файл myindex.php, то сделать это можно поместив в файл .htaccess в соответствующем каталоге следующую инструкцию: DirectoryIndex myindex.php

Получив .htaccess с таким содержимым, веб-сервер Apache откроет по умолчанию именно файл myindex.php.

Как запретить или разрешить выдачу листинга

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

Файл .htaccess необходимо создавать именно в том каталоге, в котором планируется разрешить листинг. Данная директива будет действовать также и на все подкаталоги (это достигается включенной по умолчанию в настройках виртуального хоста директивой AllowOverride All).


По умолчанию включена директива Options -Indexes, и в случае отсутствия индексной страницы вы получите HTTP ошибку 403.

Как настроить собственные страницы ошибок

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

По умолчанию Apache выдает некую довольно аскетичную страницу, на которой находится сообщение вроде «File not found». Вы можете создать альтернативную версию этой страницы, задав обработчик этой ошибки через .htaccess . Читайте об этом подробнее в разделе «Диагностика ошибок в работе сайта, обработка ошибок 403, 404. ».

Как закрыть доступ с некоторых IP-адресов

Иногда возникает необходимость запретить доступ к сайту или его части с некоторых IP-адресов.

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

Теперь при попытке обратиться к сайту с IP-адреса 172.16.16.16 посетитель получит ошибку 403 или вашу страницу для этой ошибки.

Указание части адреса в виде 172.16.16 ограничит доступ из подсети 172.16.16/24.

С более подробной документацией вы можете ознакомиться в документации по Apache.

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

Иногда возникает необходимость запретить доступ к определенным файлам. Например, к конфигурационным файлам, содержащим реквизиты доступа к базам данных, интерфейсам и т.п. Допустим, в файле config.cfg вы храните логин/пароль доступа к базе данных. Создаем в этой директории файл .htaccess с директивами:

Теперь, если посетитель наберет в браузере нечто вида //www.ваш_домен.ru//config.cfg , он получит ошибку 403 или вашу страницу для этой ошибки.

Как настроить заголовок last-modified

В ряде случаев требуется, чтобы web-сервер выдавал HTTP-заголовок Last-Modified. К примеру, при регистрации вашего ресурса на Яндексе, возникает ошибка «Неправильные даты». Для статических документов cервер будет выдавать значение last-modified всегда. Это действительно для html-файлов.

Для SSI cервер будет выдавать значение last-modified в том случае, если прописана директива «XBitHack full» (просто пропишите эту строку в .htaccess), и для файла, к которому происходит обращение, выставлен атрибут «исполняемый» для группы. В скриптах last-modified выдается иными средствами. Например, если учесть то, что php-скрипт генерирует код динамически, то самым логичным будет в качестве last-modified отдавать текущую дату и время./>

Реализуется это следующим образом:

Команда header должна выполняться в php-скрипте до того, как скрипт начнет выдавать html-текст в браузер пользователя.

Дополнительно можете изучить:

  • Функцию header;
  • Функции для работы с сервером Apache.

Как управлять кэшированием

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

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

В приведенном ниже примере отключено кэширование для текстовых документов, установлен период обновления для файлов с расширением gif — 3 месяца с момента изменения файла, для файлов с расширением jpeg — 1 день с момента обращения:

ExpiresActive on
ExpiresByType image/jpeg «access plus 1 day»
ExpiresByType image/gif «modification plus 3 months»
ExpiresByType text/html «now»

Примечание: При использовании Parser если вам необходимо полностью исключить заголовки от модуля Apache mod_expires, то для этого необходимо в директории с parser3.cgi создать файл . htaccess и внести в него следующую директиву:
ExpiresActive off

Как сделать переадресацию

Если у вас размещены 2 домена (не обязательно на одной площадке) domain1.tld и domain2.tld, и вам необходимо, чтобы при обращении к domain2.tld у пользователей изменялся адрес на «правильный», и сразу происходило перенаправление, тогда добавьте для домена domain2.tld переадресацию на //domain1.tld/.

Если вам необходимо, чтобы при обращении к вашему домену domain.tld происходило автоматическое перенаправление на www.domain.tld, создайте на виртуальной площадке в директории /home/uXXXX/domain.tld/www файл .htaccess (обратите внимание на то, что название файла начинается с точки) следующего содержания:

* О создании переадресаций с другими условиями, вы можете узнать из документации по web-серверу Apache.

Особенность переадресации на синонимах

Предположим, есть домен domain1.tld и синоним domain2.tld. Если запросить в браузере адрес //domain2.tld/dir/ со знаком слэша в конце, то будет отображена индексная страница из директории dir основного домена, при этом содержимое адресной строки браузера останется без изменений. Но если запросить //domain2.tld/dir без слэша в конце, то произойдёт переадресация на //domain1.tld/dir/, и содержимое адресной строки изменится соответствующим образом.

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

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

О создании переадресаций с другими условиями вы можете узнать из документации по web-серверу Apache.

Раньше веб-разработчикам приходилось на Windows-машине устанавливать сервер Apache с различными дополнениями к нему: PHP, Perl, MySQL и т.д. — в целях более удобной отладки сайтов. Но Дмитрий Котеров и группа программистов упростила жизнь многим веб-разработчикам, создав проект «Денвер».

Я уже давно использую Denwer (Джентельменский набор веб-разработчика). Он меня полностью устраивает, потому что этот набор прост в установке и не прихотлив в использовании.

Стандартный пакет Денвера включает в себя следующий пакет:

  • Инсталлятор (поддерживается также инсталляция на flash-накопитель).
  • Apache, SSL, SSI, mod_rewrite, mod_php.
  • PHP5 с поддержкой GD, MySQL, sqLite.
  • MySQL5 с поддержкой транзакций.
  • Система управления виртуальными хостами, основанная на шаблонах. Чтобы создать новый хост, вам нужно лишь добавить директорию в каталог /home, править конфигурационные файлы не требуется. По умолчанию уже поддерживаются схемы именования директорий многих популярных хостеров; новые можно без труда добавить.
  • Система управления запуском и завершением всех компонентов Денвера.
  • phpMyAdmin — система управления MySQL через Web-интерфейс.
  • Эмулятор sendmail и SMTP-сервера (отладочная «заглушка» на localhost:25, складывающая приходящие письма в /tmp в формате .eml); поддерживается работа совместно с PHP, Perl, Parser и т.д.

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

XAMPP

Некоторые веб-разработчики говорят, что устанавливали Денвер ранее, но после продолжительного использования он им показался ужасно неудобным и капризным. Поэтому они работают с XAMPP. Это кроссплатформенная сборка веб-сервера, содержащая Apache, MySQL, интерпретатор скриптов PHP, язык программирования Perl и большое количество дополнительных библиотек, позволяющих запустить полноценный веб-сервер.

7 мая 2020 я тоже познакомился с XAMPP. Все время до этого пользовался исключительно Денвером. Но когда установил XAMPP, чтобы запустить сайт на WordPress локально — сразу в него влюбился. Он реально крут. Не обошлось без проблем. Как всегда найдутся программы, которые также используют 80 порт. Да, опять этот Skype :). Но я отключил одну службу и все стало норм.

Lite-blog.ru

You are using an outdated browser.
Please upgrade your browser to improve your experience.

  • Вы здесь:
  • Главная
  • Полезности
  • Yii2 Делаем ЧПУ на OpenServer

Полезности

Yii2 Делаем ЧПУ на OpenServer

После уствновки YII2 первое, что я делаю, настраиваю ЧПУ. Данный способ подойдет и для хостинга и для unix подобных серверов, и для OpenServer. Сейчас наверное только ленивый не делает сайты с Чпу. Для того что бы настроить, необходимо открыть файл web.php, расположенный в папке config.

1. В файле web.php необходимо расскоментировать:

‘urlManager’ => [
‘enablePrettyUrl’ => true,
‘showScriptName’ => false,
‘rules’ => [
],
],

В папке WEB , необходимо создать файл .htaccess , содержащий следующее:

Options +FollowSymlinks
RewriteEngine On
RewriteCond % !-f
RewriteCond % !-d
RewriteRule . index.php

Если все сделано правильно, чпу подключено и работает.

Пример настройки файла htaccess php

Примеры записей в htaccess: Индексный файл, Редирект с сохранением рейтинга страницы, Склеивание www и http, Создание ЧПУ или ЧеловекуПонятныхУрлов, Редирект всех файлов папки на один файл, Защита от хотлинков, Определение кодировки и многое другое!

Указываем индексный файл (который первым открывает при обращении к сайту)

Можно указать один или несколько файлов

Редирект htaccess php

Глобальный редирект(первый /) ВСЁ пересылаем на новый адрес http://www.newsite.ru/

Все обращения к katalog переадресуем на домен newsite.ru в раздел newkatalog

Редирект с сохранением рейтинга страницы

old — пример пути старой страницы. new — пример пути новой страницы.

Редирект пользователя с конкретным ip

Конкретного пользователя (надоел он или нужно его переслать на внутренний раздел) с данным ip пересылает на страницу /out.html

Склеивание www и http htaccess php

Уже многим SEO (продвижение и оптимизация) известно, что для Поисковых Систем адреса с/без www — это разные адреса и доступность сайта с www отрицательно влияет на индексацию и ранжирование. Поэтому зачастую SEO просят разработчиков склеить сайт без www (чтобы при обращении к сайту с www происходила пересылка на без www, т.е. только http)

Теперь даже если Вы наберёте в адресной строке www.yoursite.ru, то сервер перешлёт Вас на http://yoursite.ru

Создание ЧПУ или Человеко-Понятных-Урлов htaccess php

После добавления данной строки в .htaccess будут доступны два адреса для документа. Например: www.yoursite.ru/article.php? >

В результате www.yoursite.ru/art.php?type=123 превращается в www.yoursite.ru/cat/type/123/:

Вот ещё частные варианты:

Статья с технически адресом www.yoursite.ru/article.php? >

Редирект всех файлов папки на один файл

Например вы больше не нуждаетесь в разделе сайта articles и хотите перенаправить все запросы к папке /articles на один файл /non-articles.php. Поможет код ниже

Защита от хотлинков htaccess php

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


Определение кодировки htaccess php

Дополнительные варианты самых популярных кодировок: UTF-8, Windows-1251, KOI8-R. В примерах рассмотрим самую распространённую UTF-8

Создание своих страниц ошибок

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

Видов ошибок на самом деле больше. Можете создать дополнительно и для них записи, опираясь на весь список

Запрещаем доступ

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

Apache: настройки веб-сервера, файл .htaccess

Несколько слов о веб-сервере Apache

В основном Apache httpd используется в качестве основного веб-сервера и является самым массовым продуктом своего класса. Этот сервер обладает обширными возможностями конфигурации, является очень производительным и поддерживает все известные протоколы для работы веб-серверов. Специально для Apache созданы версии таких популярных языков программирования как Perl и PHP, а также этот сервер легко интегрируется с широко применяемыми базами данных (например, MySQL).

Главный сайт проекта находится по адресу httpd.apache.org, а основная документация по версии 1.3.хх доступна на странице httpd.apache.org/docs/.

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

Индексный файл

Индексный файл или файл-индекс это тот файл, который открывается по умолчанию при обращении пользователя через веб к каталогу, а не к конкретному файлу. Например, ваш посетитель запросит адрес //ваш_домен/catalogue/ , где catalogue — название каталога. Индексный файл это тот файл, который будет показан пользователю при обращении к каталогу без указании имени конкретного файла в нем.

По умолчанию индексными файлами являются следующие: index.html , index.htm , index.php , index.php3 , index.phtml , index.shtml , default.htm или default.html . Если вы хотите чтобы первым открывался какой-то иной файл, нужно переопределить текущие значения.

Назначение и использование файла .htaccess

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

Файл .htaccess может быть размещен в корневом каталоге веб-сервера (прямо в каталоге www). В этом случае директивы из такого .htaccess действуют по всему веб-серверу. Также .htaccess может находиться и в конкретном подкаталоге сервера. Тогда директивы, которые указаны в этом файле, «перекрывают» действие директив из «основного» файла, который размещен в каталоге www или в любом каталоге более высокого уровня. То есть, действие директив из .htaccess наследуется сверху вниз, но не наоборот. Изменения, внесенные в файл, вступают в силу немедленно. Это связано с тем, что информация из .htaccess перечитывается при каждом обращении к веб-серверу Apache.

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

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

Как переопределить кодировку HTML-документов

Мы хотим «объяснить» веб-серверу что все html-документы, которые размещены на сервере, нужно «отдавать» клиенту в кодировке koi8-r, а не в windows-1251, как это сервер делает по умолчанию. Для этого поместим в .htaccess строку: AddType «text/html; charset=koi8-r» .html .htm .shtml

Получив такой .htaccess , веб-сервер Apache станет выдавать клиентскому браузеру заголовок, в котором будет указано, что документ имеет кодировку koi8-r.

Если на вашем ресурсе существуют html-документы в разных кодировках, (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), то вам, возможно, будет необходимо отключить принудительну выдачу заголовка с кодировкой windows-1251. Для этого в .htaccess добавляется строка: AddDefaultCharset Off

При этом соответствующая кодировка должна быть прописана на каждой html-странице в виде тега

Это примеры простейшего использования возможностей конфигурирования Apache через файл .htaccess.

Как закрыть директорию паролем

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

В каталоге, к которому хотим ограничить доступ по паролю, создаем файл .htaccess с такими директивами:

Путь /home/uXXXXX/.htpasswd обозначает полный путь к файлу паролей на диске нашего сервера. Если, например, вы поместите файл .htpasswd (в нем будут пароли) в домашний каталог, куда вы попадаете зайдя на сервер по FTP, то путь к этому файлу будет иметь вид /home/uXXXXX/.htpasswd, где uXXXXX — наименование вашей виртуальной площадки (например, u12345).

В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями, который мы создадим чуть позже. Если вы создаете файл .htaccess на своем компьютере, а не сразу на сервере при помощи текстового редактора, обратите внимание на то, что .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме.

Создаем файл паролей. Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл — воспользоваться программой, входящей в поставку Apache — htpasswd (на нашем сервере она находится в каталоге /usr/local/bin/, полный путь — /usr/local/bin/htpasswd).

Рассмотрим как создать файл паролей в unix shell прямо на сервере. Зайдем в shell, и будем выполнять следующие команды:

* htpasswd -mbc .htpasswd user1 sNQ7j9oR2w создаем новый файл .htpasswd, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке. Просьба обязательно заменить sNQ7j9oR2w на любой собственный пароль — здесь этот пароль указан только для примера
* htpasswd .htpasswd user2 добавляем в уже существующий файл .htpasswd пользователя user2, а пароль вводим вручную в ответ на соответствующий запрос программы

Если вы используете Windows и не хотите пользоваться unix shell для генерации паролей, можно загрузить Windows-версию программы htpasswd здесь и создать файл с паролями на своем компьютере, после чего загрузить его на сервер. Если у вас уже установлена Windows-версия Apache, файл htpasswd.exe можно найти в каталоге Program Files\Apache Group\Apache\bin\.

Итак, получите htpasswd.exe и используйте его для генерации паролей таким образом:

* htpasswd.exe -mc .htpasswd user1 создаем новый файл паролей htpasswd.exe, пароль и его подтверждение будут запрошены интерактивно
* htpasswd.exe -m .htpasswd user2 добавляем пользователя user2 в существующий файл паролей htpasswd.exe, запросив пароль интерактивно

После окончания заведения всех логинов файл нужно загрузить на сервер.

Как переопределить индексный файл

Ситуация: пользователь обратился к каталогу //www.ваш_домен.ru/price/. При таком запросе первым откроется и будет показан индексный файл. Если вы хотите переопределить индексный файл и сделать так, чтобы первым открывался не index.htm, а, например, файл myindex.php, то сделать это можно поместив в файл .htaccess в соответствующем каталоге следующую инструкцию: DirectoryIndex myindex.php

Получив .htaccess с таким содержимым, веб-сервер Apache откроет по умолчанию именно файл myindex.php.

Как запретить или разрешить выдачу листинга

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

Файл .htaccess необходимо создавать именно в том каталоге, в котором планируется разрешить листинг. Данная директива будет действовать также и на все подкаталоги (это достигается включенной по умолчанию в настройках виртуального хоста директивой AllowOverride All).

По умолчанию включена директива Options -Indexes, и в случае отсутствия индексной страницы вы получите HTTP ошибку 403.

Как настроить собственные страницы ошибок

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

По умолчанию Apache выдает некую довольно аскетичную страницу, на которой находится сообщение вроде «File not found». Вы можете создать альтернативную версию этой страницы, задав обработчик этой ошибки через .htaccess . Читайте об этом подробнее в разделе «Диагностика ошибок в работе сайта, обработка ошибок 403, 404. ».

Как закрыть доступ с некоторых IP-адресов

Иногда возникает необходимость запретить доступ к сайту или его части с некоторых IP-адресов.

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

Теперь при попытке обратиться к сайту с IP-адреса 172.16.16.16 посетитель получит ошибку 403 или вашу страницу для этой ошибки.

Указание части адреса в виде 172.16.16 ограничит доступ из подсети 172.16.16/24.

С более подробной документацией вы можете ознакомиться в документации по Apache.

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

Иногда возникает необходимость запретить доступ к определенным файлам. Например, к конфигурационным файлам, содержащим реквизиты доступа к базам данных, интерфейсам и т.п. Допустим, в файле config.cfg вы храните логин/пароль доступа к базе данных. Создаем в этой директории файл .htaccess с директивами:

Теперь, если посетитель наберет в браузере нечто вида //www.ваш_домен.ru//config.cfg , он получит ошибку 403 или вашу страницу для этой ошибки.

Как настроить заголовок last-modified

В ряде случаев требуется, чтобы web-сервер выдавал HTTP-заголовок Last-Modified. К примеру, при регистрации вашего ресурса на Яндексе, возникает ошибка «Неправильные даты». Для статических документов cервер будет выдавать значение last-modified всегда. Это действительно для html-файлов.

Для SSI cервер будет выдавать значение last-modified в том случае, если прописана директива «XBitHack full» (просто пропишите эту строку в .htaccess), и для файла, к которому происходит обращение, выставлен атрибут «исполняемый» для группы. В скриптах last-modified выдается иными средствами. Например, если учесть то, что php-скрипт генерирует код динамически, то самым логичным будет в качестве last-modified отдавать текущую дату и время./>

Реализуется это следующим образом:

Команда header должна выполняться в php-скрипте до того, как скрипт начнет выдавать html-текст в браузер пользователя.

Дополнительно можете изучить:

  • Функцию header;
  • Функции для работы с сервером Apache.

Как управлять кэшированием

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

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

В приведенном ниже примере отключено кэширование для текстовых документов, установлен период обновления для файлов с расширением gif — 3 месяца с момента изменения файла, для файлов с расширением jpeg — 1 день с момента обращения:

ExpiresActive on
ExpiresByType image/jpeg «access plus 1 day»
ExpiresByType image/gif «modification plus 3 months»
ExpiresByType text/html «now»

Примечание: При использовании Parser если вам необходимо полностью исключить заголовки от модуля Apache mod_expires, то для этого необходимо в директории с parser3.cgi создать файл . htaccess и внести в него следующую директиву:
ExpiresActive off

Как сделать переадресацию

Если у вас размещены 2 домена (не обязательно на одной площадке) domain1.tld и domain2.tld, и вам необходимо, чтобы при обращении к domain2.tld у пользователей изменялся адрес на «правильный», и сразу происходило перенаправление, тогда добавьте для домена domain2.tld переадресацию на //domain1.tld/.

Если вам необходимо, чтобы при обращении к вашему домену domain.tld происходило автоматическое перенаправление на www.domain.tld, создайте на виртуальной площадке в директории /home/uXXXX/domain.tld/www файл .htaccess (обратите внимание на то, что название файла начинается с точки) следующего содержания:

* О создании переадресаций с другими условиями, вы можете узнать из документации по web-серверу Apache.

Особенность переадресации на синонимах

Предположим, есть домен domain1.tld и синоним domain2.tld. Если запросить в браузере адрес //domain2.tld/dir/ со знаком слэша в конце, то будет отображена индексная страница из директории dir основного домена, при этом содержимое адресной строки браузера останется без изменений. Но если запросить //domain2.tld/dir без слэша в конце, то произойдёт переадресация на //domain1.tld/dir/, и содержимое адресной строки изменится соответствующим образом.

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

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

О создании переадресаций с другими условиями вы можете узнать из документации по web-серверу Apache.

Раньше веб-разработчикам приходилось на Windows-машине устанавливать сервер Apache с различными дополнениями к нему: PHP, Perl, MySQL и т.д. — в целях более удобной отладки сайтов. Но Дмитрий Котеров и группа программистов упростила жизнь многим веб-разработчикам, создав проект «Денвер».

Я уже давно использую Denwer (Джентельменский набор веб-разработчика). Он меня полностью устраивает, потому что этот набор прост в установке и не прихотлив в использовании.

Стандартный пакет Денвера включает в себя следующий пакет:

  • Инсталлятор (поддерживается также инсталляция на flash-накопитель).
  • Apache, SSL, SSI, mod_rewrite, mod_php.
  • PHP5 с поддержкой GD, MySQL, sqLite.
  • MySQL5 с поддержкой транзакций.
  • Система управления виртуальными хостами, основанная на шаблонах. Чтобы создать новый хост, вам нужно лишь добавить директорию в каталог /home, править конфигурационные файлы не требуется. По умолчанию уже поддерживаются схемы именования директорий многих популярных хостеров; новые можно без труда добавить.
  • Система управления запуском и завершением всех компонентов Денвера.
  • phpMyAdmin — система управления MySQL через Web-интерфейс.
  • Эмулятор sendmail и SMTP-сервера (отладочная «заглушка» на localhost:25, складывающая приходящие письма в /tmp в формате .eml); поддерживается работа совместно с PHP, Perl, Parser и т.д.

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

XAMPP

Некоторые веб-разработчики говорят, что устанавливали Денвер ранее, но после продолжительного использования он им показался ужасно неудобным и капризным. Поэтому они работают с XAMPP. Это кроссплатформенная сборка веб-сервера, содержащая Apache, MySQL, интерпретатор скриптов PHP, язык программирования Perl и большое количество дополнительных библиотек, позволяющих запустить полноценный веб-сервер.

7 мая 2020 я тоже познакомился с XAMPP. Все время до этого пользовался исключительно Денвером. Но когда установил XAMPP, чтобы запустить сайт на WordPress локально — сразу в него влюбился. Он реально крут. Не обошлось без проблем. Как всегда найдутся программы, которые также используют 80 порт. Да, опять этот Skype :). Но я отключил одну службу и все стало норм.

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