Apache если нет индексного файла
Внимание!
Настройки apache установленного под windows или под другой операционной системой одинаковые. Отличие только в путях к файлам и в некоторых специфических настройках.
Поэтому эти настройки подойдут для апача установленного под freebsd, linux, и т.д.
В этой статье я затрону не все, а наиболее важные настройки apache установленного под windows. Это минимум, который необходим для запуска нового сервера.
В предыдущей статье я рассказал как быстро установить apache на windows с помощью xampp и эта статья является ее продолжением.
Если вы устанавливали apache по другой схеме, то у вас могут отличаться пути к файлам настроек, но сами настройки будут такие же.
Если вы еще не установили apache, советую вам установить его как рассказано в этой статье (Как установить сервер apache дома под windows).
1. Скрываем лишнюю информацию.
По умолчанию сервер выдает слишком много информации, просто сливает нужную информацию хаккерам.
Например в заголовках сервера, а так же при выводе стандартных служебных страниц типа 404 можно видеть подобное
здесь находите команду "ServerTokens", это и есть объем показываемой информации о сервере.
Меняем значение на такое ServerTokens Prod.
В этом случае светится будет только название сервера.
Кроме этого заголовка сервер выдает еще один не приятный заголовок
X-Powered-By:
Этот заголовок появляется когда информация выводится с помощью PHP скрипта.
Если запросить статический html документ, то этого заголовка не будет, но если информацию на страницу выведет PHP скрипт, то в этом заголовке будет подобное
X-Powered-By: PHP/5.2.5
То есть заголовок объясняет всем, что страница создана с помощью PHP и показывает версию PHP.
Даже если вы используете mod rewrite и обращаетесь к страницам как к статическим документам, то этот заголовок все равно расскажет всем, что страница создана с помощью PHP.
Лучше всего убрать этот заголовок. Полезно, если вы хотите замаскировать свой сайт под полностью статический, ну и хулиганы лишний раз не узнают версию PHP.
Для этого потребуется конфиг php.ini
Обычно он лежит в папке php, но может быть и в других местах, да еще и в нескольких экземплярах.
Чтобы точно найти нужный php.ini, выполните phpinfo(); в скрипте и найдите параметр Loaded Configuration File, тут и будет путь до конфига php.
Открываем php.ini и находим
expose_php = on
меняйте значение на off
3. Типы файлов (MIME types)
Когда с сервера запрашивается какой-либо файл, apache прежде выясняет какой тип имеет этот файл (картинка, текстовый файл, архив, и т.д.). После этого сервер посылает заголовок, в котором указано какой тип файла сейчас будет отдан. Браузер получает этот заголовок и на основании него решает, что делать с этим файлом.
До недавнего времени по умолчанию в apache отсутствовал тип файлов RAR, всем известный архив. И если вы разместите на своем сайте файл rar, то например браузер OPERA вместо скачивания этого файла начнет открывать его в браузере как текстовый файл и будут видны непонятные символы. Чтобы этого не было, нужно добавить на сервер тип файлов RAR.
Если установку делали через XAMPP, то настройки типов файлов тут
/xampp/apache/conf/mime.types
Нужно добавить строку
application/x-rar-compressed rar
Но прежде убедитесь, что этот тип еще не прописан, так как в последней версии XAMPP он уже присутствует.
Начало работы с виртуальными хостами начинается так
NameVirtualHost *:80
После этого можно указывать параметры хостов(сайтов)
Обязательно, первый описанный хост должен быть localhost, после него можно начинать указывать настройки других хостов, иначе при определенных настройках сервера ваши виртуальные хосты могут не правильно обрабатываться и возникнет путаница между ними.
Вот пример минимальных настроек на примере организации трех хостов
ServerName localhost
Указывает, что название домена localhost
DocumentRoot c:/xampp/htdocs/localhost/www
Указывает на место в котором хранятся файлы сайта.
Можно указывать без использование буквы диска /xampp/htdocs/localhost/www
Хранить файлы сайта можно в любом месте, но для удобства, лучше хранить их там же, где установлен сервер.
Этих настроек хостов вполне хватит, чтобы домены и сайты нормально функционировали, но можно это все не много улучшить.
Например, скрипты любого из этих сайтов имеют доступ ко всем файлам и папкам всего компьютера.
Любой скрипт может случайно или намеренно удалить любые файлы с вашего компьютера, т.к. ничто не ограничивает зону действия этого скрипта.
Чтобы дать ограничение существует такая команда
А можете даже запретить использование PHP скриптов в определенной директории таким образом
Можете еще указать место хранения логов, чтобы логи каждого сайта хранились в своем месте.
Лог ошибок и лог доступа к сайту
ErrorLog "c:/xampp/htdocs/webi.ru/log/error_log.txt"
CustomLog "c:/xampp/htdocs/webi.ru/log/access_log.txt" combined
И вот пример виртуального хоста из всех вышеперечисленных пунктов
ServerName webi.ru
ServerAlias www.webi.ru
DocumentRoot c:/xampp/htdocs/webi.ru/www
ServerAdmin adm@webi.ru
php_admin_value open_basedir "c:/xampp/htdocs/webi.ru/"
ErrorLog "c:/xampp/htdocs/webi.ru/log/error_log.txt"
CustomLog "c:/xampp/htdocs/webi.ru/log/access_log.txt" combined
Если вы прописали эти домены в виртуальных хостах, то теперь при посещении этих сайтов вы будете попадать на свой сервер, даже если пропишите любые домены.
6. Псевдонимы.
По умолчанию, после установки сервера с помощью xampp установлены некоторые стандартные псевдонимы.
Например, если набрать в браузере http://localhost/phpmyadmin, то вы попадете в phpmyadmin, не смотря на то, что в папке отведенной для скриптов нет phpmyadmin.
phpmyadmin будет доступен из под любого домена http://домен/phpmyadmin
Такая опция задается с помощью псевдонимов в настройке apache.
Для xampp это находится в файле /xampp/apache/conf/extra/httpd-xampp.conf,
если устанавливали сервер иначе, то редактировать можно основной конфиг apache.
В этом файле можно видеть такие строки
Alias /phpmyadmin "/xampp/phpMyAdmin/"
или
Alias /webalizer "/xampp/webalizer/"
Alias /phpmyadmin123 "C:/xampp/phpMyAdmin/"
Обратите внимание, защита выхода скриптов за пределы директории php_admin_value open_basedir содержит еще путь до папки phpmyadmin, иначе если к нему не будет доступа, то он и работать не будет.
И еще можете заметить, что вызов phpmyadmin происходит через phpmyadmin123, чтобы не сразу могли найти.
.
Эта конструкция и запрещает доступ снаружи, конечно сам запрет находится внутри этой конструкции, но если вам нужно открыть внешний доступ например для phpmyadmin, то просто удалите его из этого списка.
Комментарии
20.12.2010 Денис
Спасибо большое.
Мучался неделю с denwerom не мо вывести в интернет, а с вашими статьями вывел серв в интернет да еще и настроил! Спасибо большое!
Еслу у вас есть вебмони скажите свой WMR
Мой icq:
20.12.2010 админ
Денис, спасибо за предложение, но для подобных благодарностей я планирую предусмотреть специальный раздел, в котором будут все мои реквизиты и любой желающий сможет поблагодарить любым удобным для себя способом.
Будьте внимательны, я не даю вам свой WMR, поэтому если кто-то здесь напишет свой WMR, это не я.
По этой же причине я удалил ваш номер аськи, чтобы никто не выдал себя за меня.
03.01.2011 Алексей
Спасибо за статью!
Очень все понятно и доходчиво объяснили.
Будут вопросы-первым делом загляну сюда!
28.01.2011 Никита
Не подскажете пожалуйста как настроить апач. Ситуация такая.
Нужно при обращении к серверу по ip 192.168.0.1/images
Сделать так чтобы апач выдавал картинки с сетевого диска, так как хранилище картинок расположено на другом сервере.
ОС Windows
28.01.2011 сергей
Никита, ну а в виртуальных серверах если добавить алиас?
Alias /images "F:/ase/kkfd/"
В данном случае при обращении к папке images будет обращение к F:/ase/kkfd/
30.01.2011 Никита
Проблема в том что нужно чтобы папка была доступна всем ПК в сети
31.01.2011 сергей
Никита, ну так а почему она не доступна то?
она вроде бы и будет доступна, если алиас прописать.
разве нет?
06.02.2011 Никита
Проблему решил так.
Немного перенастроил DNS сервер в сети - Добавил запись CNAME.
Была еще проблема Apache не стартовал когда был указан сетевой диск. Проблему решал подключением сетевого диска под учетной записью system.
Осталась одна проблемка. Сетевой диск по видимому подключается после запуска службы Apache. Поэтому приходится стартовать Apache вручную. Пробовал ставить запуск bat-ника при неудачном запуске Apachа а потом перезапуск службы. Не помогает.
Может быть есть еще какое решение.
07.02.2011 Сергей
Никита, а не пробовал запускать апача не как службу? Например просто кинуть его в автозагрузку, в этом случае он должен стартануть позже.
17.02.2011 олег
БОЛЬШОЕ спасибо за статью. Как для начинающего, для меня она важна. Думаю злодеям теперь не так легко будет. Такую информацию вообще надо на подобных сайты на главных страницах размещать.
27.02.2011 Виталий
после записи в файл конфигурации хостов
NameVirtualHost *:80
при попытке войти на сервер выдает ошибку Access forbidden!Error 403
помогите разобраться что я делаю не так . заранее спасибо
27.02.2011 админ
Виталий, может у вас в папке нет индексного файла? (index.php, index.html)
28.02.2011 Виталий
у меня получилась конструкция без NameVirtualHost *:80
01.03.2011 Ruby
в файле httpd.conf я нигде не мог найти это словосочетание- ServerTokens, теперь думаю как всё будет "высвечиватся". :(
02.03.2011 Саня
админ респект те большой за твои статьи!
Но я столкнулся с такой проблемкой листинга: удаляю Indexes а он востанавливается после перезапуска серва! сам я лол в етой теме и ето мой первый серв.
Решил проблему пока так: создал фаил .htaccess с содержимым: Options -Indexes
02.03.2011 админ
Ruby, проверьте все конфиги, возможно в каком то другом файле есть ServerTokens.
если не найдете, добавьте сами.
02.03.2011 админ
Саня, попробуйте поискать Indexes в других конфигах, может где то еще упоминается.
Однажды у меня была проблема с одной программой, которая при старте сбрасывала конфиг и переписывала его параметрами по умолчанию.
Ничего не мог сделать, тогда я просто выставил на файл конфига разрешения только на чтение, после этого конфиг не перезаписывался, может вам так же попробовать?
03.03.2011 Саня
в процесе прогулки по сайтам наткнулся на такой вот блок:
Программа: XAMPP for Windows
Уязвимость позволяет локальному злоумышленнику выполнить вредоносные действия с повышенными привилегиями на целевой системе. Уязвимость существует из-за ошибки в проверке входных данных. Атакующий может передать специально сформированные данные, что приведет к выполнению произвольного кода с привилегиями администратора.
и как ето устранить?
зарание спасибо
03.03.2011 админ
Саня, но тут говорится что то про локального злоумышленника, возможно про того, кто входит в ваш компьютер под другим юзером, но не того, кто из инета стучится.
И потом не совсем понятно, что тут имеется в виду, как сам xampp имеет к этому отношение, ведь xampp это только установщик сервера, а после установки xampp уже не работает.
08.03.2011 Сергей
а почему когда я ввожу ip своего компа,ничего не происходит в отличии от 127.0.0.1 ?
Пользователям мы предоставляем возможность самостоятельной конфигурации Apache путем использования соответствующих директив в файле .htaccess. Таким образом можно решить большинство задач по конфигурации веб-сервера в условиях массового хостинга.
Пример: запрет доступа к некоторым файлам
Иногда возникает необходимость запретить доступ к определенным файлам. Например, к конфигурационным файлам, содержащим реквизиты доступа к базам данных, интерфейсам и т.п. Допустим, в файле config.cfg вы храните логин/пароль доступа к базе данных. Создаем в этой директории файл .htaccess с директивами:
Зачем нам .htaccess ?
Представьте, что вы купили себе хостинг и кажется, почти обрели счастье. Но однажды (а может быть дважды, а может и трижды) ваш сайт перестает отвечать на запросы. Начинает медленно грузиться и вообще вести себя странно. А виртуальный хостинг это такая хитрая штука, что помимо вашего сайта на этом сервере находится ещё два десятка других сайтов. Все они разные по мощности, организованности и трафику. И когда ваш сосед по случайности, а может и умыслу запускает на своем хостинге сложные или избыточные в алгоритмах скрипты, это отзывается и на вас.
Или другой пример. Скажем ваш ресурс начинает набирать популярность, но переезжать на выделенный сервер ещё рано, а мощностей VPS уже не хватает. Вас очень может выручить htaccess.
А ещё htaccess может решить некоторые вопросы с безопасностью вашего сайта.
Оказывается в интернете много различной противоречивой информации относительно того как использовать .htaccess. Пришлось долго и нудно экспериментировать, чтобы понять что истинно, а что ложно. В большинстве случаев авторы советов в своих блогах забывают упомянуть, что для работы определенных условий нужен тот или иной модуль Апача.
Впрочем хватит слов, пора к делу. Попробуем создать почти идеальный .htaccess
1. Первой строкой задаем основные опции:
Использовать опции очень удобно, когда у вас нет доступа к конфигурированию Апача или нужны разные настройки Апача для разных сайтов на одном сервере.
Опция -ExecCGI запрещает запуск CGI скриптов. Лучше разрешить только для конкретных папок. Повысит безопасность.
Опция -Indexes запрещает показывать содержимое каталогов, если в них нет индексного файла. На виртуальном хостинге обычно включена по умолчанию. Изменив минус на плюс +Indexes можете наоборот разрешить просмотр содержимого каталога (или каталогов).
Опция -Includes запрещает SSI. Если не знаете, что это — запрещайте (Можно поЯндексировать(! ) по запросу Server Side Include если хотите узнать об этом побольше). Можно использовать опцию IncludesNOEXEC, которая разрешит использовать SSI без запуска скриптов.
Опция +FollowSymLinks позволяет использовать символические ссылки на файлы или каталоги, не находящиеся в пределах корня вашего сайта.
Вы можете использовать htaccess с разными настройками для разных каталогов. В корне сайта вы можете объявить -Indexes, а в избранных каталогах создать ещё один файл .htaccess и в нем объявить +Indexes. Помните, что действие опций htaccess распространяет сверху вниз по дереву каталогов до самой глубокой вложенности, пока не будут отменены другим htaccess.
Необязательно полностью перечислять все опции в дочерних .htaccess если они не изменяются. Достаточно указать (переназначить) только те опции и директивы, которые изменяются. Остальные опции также унаследуются от родителя.
Скажем, у вас есть вот такой путь /site/folder_one/subfolder/other/
В файле /site/.htaccess вы указываете:
В файле /site/folder_one/.htaccess указываете:
В файле /site/folder_one/subfolder/.htaccess указываете:
Получиться вот что:
В папке site будут показываться файлы любого содержания, если только к ним напрямую обратиться. Или индексный файл, если не явного обращения к одному из файлов. В случае отсутствия индексного файла получена 403 ошибка.
К папке folder_one доступ закрыт. Даже если знать имя файла и набрать его в адресной строке в ответ сервер вернет ошибку 403.
Папка subfolder разрешена для обращений по прямому адресу или же в случае отсутствия индексного файла покажет содержимое каталога. Эти же права распространяться и на папку other.
Если убрать файл ,htaccess из папки folder_one, то она унаследует права от родительской site.
2. Немного SEO (куда же без него)
Обязательно не забыть про условие . Не окажись у хостера данного модуля и ваш сайт станет выдавать 500-ую ошибку. Данный конкретный модуль входить в сборку Апача по-умолчанию. Ну а вдруг… Хостеры и их админы бывают всякие.
В данной части пользы больше для SEO. Модуль rewrite как следует из его названия занимается перенаправлениями (привет Кэпу) .
3. Кто в папке главный?
Если у вас папке есть файлы index.html и index.php (не знаю, зачем и кому такое было нужно, но не раз видел такое) то как указать серверу кто их них более индексный?
А ещё можно там указать скажем roosso.php и тогда набрав в строке запроса адрес сайт.бла/бла/бла/ вы увидете не index, а roosso
4. Ещё настройки…
Первая строчка устанавливает часовой пояс. Например в Apache 2.22.22 был баг связанный с этой опцией. Функции времени в php не работали, пока не установишь часовой пояс.
Вторая строка это подпись сервера. Вы их не раз видели на всяких системных страницах типа 500ой ошибки или 403ей. Обычно там какая-нибудь техническая информация и почта вебмастера. Я предпочитаю даже в таких мелочах скрывать данные о софте на сервере. Коллеги параноики меня поддержат.
Угадайте, что делает третья строка?
5. Когда нет доступа к php.ini
С помощью .htaccess мы также можем управлять рядом настроек PHP. На виртуальном хостинге, как правило, нет возможности изменять настройки php.ini. Чаще всего этого и не требуется. Но все же есть ряд опций контроль над которыми может нам быть полезен. Например, увеличить лимит на загрузку файлов, или лимит передачи данным методом POST.
Первая строчка разрешить загружать файлы размером до 32 Мегабайт. По умолчанию в php обычно это значение 8 или 16 мегабайт.
Второй строкой разрешаем постинг объемом до 10 мегабайт. По умолчанию это значение обычно 2 Мегабайта.
Третья строка устанавливает кодировку по используемую вашими скриптами. По своей сути она дублирует строку: «AddDefaultCharset UTF-8». Но я чаще прибегаю к установке кодировки именно через php.
Четвертой строкой изменяем лимит времени выделенный на выполнение скрипта. По умолчанию он обычно равен 30 секундам. Но иногда для выполнения каких нибудь сложных обработок требуется больше времени.
6. Типы файлов. Ловкость рук и ни какого мошенничества.
В моей практике случалось пару раз, что после какого либо обновления провайдером софта, слетали типы файлов. Хотя такое редко. За 10 лет, всего два случая. Но иногда мне нужно было заставить html работать как php. А иногда требуется научить апач различать типы файлов, которые ему неизвестно. (Как оказалось Апачу вообще мало что известно из редких типов файлов.) В такой ситуации нас спасет следующий код:
Первая строчка позволит нашим php файлам иметь расширение html, но выполняться как php. Полезно бывает во многих случаях. А в старые добрые когда поисковики индексировали ЧПУ лучше, такая строчка всегда приходила на выручку.
Мы можем переназначить, добавить или подменить любые типы файлов под удобные нам разрешения.
Кстати, вы можете легко написать к примеру вот такую строку:
Потом переименовать все ваши файлы, изменив расширение на .i (не забыв конечно про ссылки) и адреса файлов у вас на сайте будут не сайт.мой/index.php?uri а сайт.мой/index.i?uri
Например я пишу
Второй строкой указано, какие расширения файлов должны выполняться как cgi скрипты.
Третья, четвертая и пятая строки, на всякий случай уточняют мим-тип файлов с разрешением css, js, xml. Не путайте с присвоением заголовка в ответе сервера на запрос, как это сделано в первых двух строках.
Шестая строчка это участка, нужна если на вашем сайте есть скачиваемый для пользователей контент. Если добавить эту строку, то при обращении к данным файлам им будет предлагаться скачать их на компьютер, а не как это сейчас в современным браузерах куча плагинов, которые даже word открывают в браузере.
Седьмую строку я закомментировал. Это строчка в принудительно-добровольном порядке, будет все файлы с вашего сервера запустить как php. Её лучше использовать лишь в отдельных папках, при необходимости.
7. Знают взрослые и дети, что архивы меньше весят…
Полезно, когда ваши страницы загружаются быстрее. Поэтому люди и придумали архивировать файлы. А потом они ещё подумали и решили, что архивировать можно и страницы на сайтах и картинки. Причем делать это незаметно для пользователя, но существенно снижать трафик и ускорять загрузку страниц. Волшебные слова прозвучали, теперь обсудим, как это можно сделать.
У Апача есть два модуля сжатия. Оба не являются модулями по умолчанию, поэтому необязательно могут присутствовать у вашего провайдера. Но как показала практика у 99% провайдеров один из них стоит. Наиболее распространен mod_deflate. Чтобы его с помощью сжимать весь контент на вашем сайте добавьте в .htaccess следующие строки:
Как видите мы должны перечислить mime type файлов, которые следует подвергать сжатию. Сюда можно добавить и видео и картинки, но толку это даст мало. Потому что jpeg или gif уже сами по себе являются сжатыми форматами. Также как avi или flv. Вы фактически нечего не выиграете указав их.
Второй менее популярный модуль это mod_gzip, Чтобы включить сжатие с его помощью добавьте вот такие строчки:
Данный модуль умеет работать с масками, что несомненно большой плюс. Да и синтаксис у него куда более гибкий чем у предыдущего. Но используют его реже. А по сжатию я даже не берусь судить, который из модулей лучше. Я сильной разницы не заметил при тестах.
8. А ещё быстрее можно?
Можно. Если применить кеширование страниц. У кеширования есть и плюсы и минусы, поэтому подходить к этому вопросу надо подготовившись. Для динамически обновляющегося сайт каждый 2-3 минуты, например популярного форума, нужно учесть, что пользователь должен видеть актуальную информацию. Но у любого сайт есть контент, который более или менее статичен. Например те же картинки, или файлы стилей. Поэтому нам потребуется по разному использовать кеширование различного содержимого на сайте. В html разметки мы всегда можем использовать meta теги. И через php мы может устанавливать заголовки ответа сервера. Остается вопрос, как быть с css, js, image и т.д. и т.п.
Помочь нам в этом могут два модуля: mod_headers и mod_expires которые могут установить заголовки в ответ сервера и подсказать вашему браузеру, что и как нужно кешировать. Один из модулей обычно стоит у провайдера, но как и в случае с любым модулем, который не входит в стандартную сборку Апача, 100% гарантии никто вам не даст. Поэтому снова во избежание 500й ошибки указывает условия для каждого из модулей.
Вот такой синтаксис у mod_headers. Думаю по комментариям ясно что к чему.
В данной секции я отключил кеширование php файлов. Хотя по моему мнению небольшой временной интервал кеширования им не повредит. 5-30 секунд, это интервал времени, за который мало что меняется. А многие пользователи любят пользоваться клавишей back (вернуться назад). Чтобы не загружать им страницу второй раз, а подхватить её из кеша, разумный интервал кеширования все же уместен.
Во второй секции где идут условия для mod_expires я именно так и делаю — для php ставлю небольшой интервал кеширования.
9. Правила вежливого тона…
Для 400-х ошибок можно использовать и динамические страницы на php. А вот для 500 лучше сделать на html и js. Это часть ошибок обычно связана с ошибками сервера (в большинстве случаев) и php или cgi как правило в такой ситуации не работают.
Если вам лень делать столько страниц устанавливайте страницей ошибок главную страницу своего сайта или карту сайта.
Все это вы делаете исключительно для людей. Поисковым роботам плевать на то есть у вас страницы ошибок или нет. Они видят ответ сервера с кодом ошибки и блокируют вашу страницу в поиск. Так что имейте ввиду, это не панацея. Это лишь вежливость к вашей аудитории и имидж вашего сайта.
10. Подведем итог
Знатоки понимают, что в этой статье описано далеко не все. Я коснулся здесь лишь поверхности «айсберга». На самом деле возможности .htaccess куда много обширней, чем описано в статье. Но я и не преследовал целью перевести манаул по htaccess на русский язык. Всего чего я хотел это создать небольшой костяк файла .htaccess для тех, кто только приступил к изучению данного вопроса, чтобы сэкономить их время на поисках информации по сети.
В результате всех манипуляций у нас должен был получить файл следующего содержания:
Я старался не спешить в написании статьи и на это ушли почти сутки. Но все же где то я мог допустить ошибки в орфографии или пунктуации. Прошу не казнить, а миловать. А лучше писать в личку, чтобы я поправил ошибки.
И напоследок для любителей экспериментов несколько строк .htaccess. Сужу по своему опыту — на практике знания усваиваются лучше чем в теории.
Кому надо берите полностью готовый .htaccess здесь
Данный файл показал самую высокую производительность на тестах.
Также там куча всего закомментировано о чем я не упомянул в статье и что может пригодиться в тех или иных случаях.
Я очень не люблю, чтобы у меня все валялось, где попало, так что для начала создадим папки, где у нас будут располагаться программы и сайты.
Создадим на диске «C:\» (или где вам удобней) папку «Server»:
C:\Server\
В ней создадим 2 папки:
C:\Server\web – это папка в которой у нас будут лежать программы
C:\Server\domains – а в этой папке будут лежать наши сайты
Итак, в папке \web\ мы создадим 3 папки для apache, php, mysql:
C:\Server\web\apache\
C:\Server\web\php\
C:\Server\web\mysql\
Далее перейдем в папку domains и создадим папку \localhost\
C:\Server\domains\localhost\
Внутри папки у нас будет 2 подпапки: public_html – для файлов сайта; logs – для текстовых файлов, в которых записывается «кто» получал доступ к сайту и какие ошибки в работе сайта появлялись.
C:\Server\domains\localhost\public_html\
C:\Server\domains\localhost\logs\
На этом структура папок заканчивается, переходим к настройке Apache.
Настройка Apache
RequestHeader unset DNT env=bad_DNT
Остальные параметры оставляем без изменений. Откроем файл «httpd-autoindex.conf», изменим там только строки с путем:
Alias /icons/ "c:/Server/web/apache/icons/"
Options Indexes MultiViews
AllowOverride None
Require all granted
Настройка PHP
short_open_tag = On
zlib.output_compression = On
post_max_size = 64M
include_path = ".;С:\Server\web\php\includes"
extension_dir = "C:/Server/web/php/ext"
upload_tmp_dir = "C:/Server/web/php/upload"
upload_max_filesize = 64M
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
; в секции [Date] указываем временную зону нашего сервера (http://php.net/date.timezone)
date.timezone = "Asia/Yekaterinburg"
session.save_path = "С:/Server/web/php/tmp/"
Настройка MySQL
- Перетащите курсор мыши в правый нижний угол экрана
- Щелкните на значке «Поиск» и введите: панель управления
- Выберите System (Система)-> Advanced (Дополнительные параметры системы)
- Выберите Environment Variables (Переменные среды), в меню System Variables (Системные переменные), найдите переменную PATH и щелкните на ней.
- Пропишите пути к Apache и MySQL:
Далее запустим наш сервер, для этого запустите «start-server.bat» от имени администратора. После того как сервер запустился, откройте браузер и введите в адресной строке «localhost».
Должна отобразиться страница с информацией о PHP.
Директивы в конфигурацонных файлах показывать содержимое директорий нет, но тогда какого фига содержимое директорий показывается?
Mike - 31 Июль, 2009 - 11:27
попробуй выставить на папку запрет на просмотр
Condor - 31 Июль, 2009 - 11:34
Тогда по фтп не видать ничего будет.
balamutick - 31 Июль, 2009 - 11:35
FAQ по файлу .htaccess
Ставим запрет на отображение содержимого директории при отсутствии индексного файла:
Options -Indexes
Чтобы, наоборот, разрешить веб-серверу отображать содержимое директории при отсутствии индексного файла, надо добавить инструкцию:
Options +Indexes
Condor - 31 Июль, 2009 - 18:08
А в настройках апача, чтобы глобально было?
Linuxsoid - 31 Июль, 2009 - 17:26
Попробуйте в каждую папку index.html добавить, пустой или с текстом, например: просмотр папки запрещён.
Condor - 31 Июль, 2009 - 18:11
А если там дофига директорий и всё перегенирируется постоянно?
Нет, это не вариант.
У меня два веб сервера.
Настройки апача идентичны, один директории не показывает, а другой показывает!
Я с которого не показывает все настройки апача слил, только виртуальные хосты поправил, а он один фиг показывает содержимое директорий!
Вот как это называется а?
balamutick - 3 Август, 2009 - 09:45
Condor я тебе на 100 не скажу, но насколько я помню, там что-то подобное как мой совет.
cinic - 4 Август, 2009 - 02:01
Можно удалить право на чтение из каталога DocumentRoot (корневой директории). Тогда по-идее должна выдаваться ошибка 403 при просмотре всех подкаталогов DocumentRoot.
Т.е. например если корневые папки клиентов - обычные хомяки, то достаточно поставить права 311 на /home. Должно помочь.
Condor - 4 Август, 2009 - 04:23
Спасибо, этот способ помог.
Вот почему у меня не сработал способ переливания настроек с другого сервака, я там тоже права на чтение для других закрыл и забыл об этом :0))
Гость - 15 Декабрь, 2009 - 20:18
Гость - 27 Декабрь, 2013 - 05:46
Пример: как создать переадресацию
Либо добавьте в файле .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, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке. Просьба обязательно заменить sNQ7j9oR2w на любой собственный пароль — здесь этот пароль указан только для примера
- добавляем в уже существующий файл .htpasswd пользователя user2, а пароль вводим вручную в ответ на соответствующий запрос программы
Если вы используете Windows и не хотите пользоваться unix shell для генерации паролей, можно загрузить Windows-версию программы htpasswd здесь и создать файл с паролями на своем компьютере, после чего загрузить его на сервер. Если у вас уже установлена Windows-версия Apache, файл htpasswd.exe можно найти в каталоге Program Files\Apache Group\Apache\bin\.
Итак, получите htpasswd.exe и используйте его для генерации паролей таким образом:
- создаем новый файл паролей htpasswd.exe , пароль и его подтверждение будут запрошены интерактивно
- добавляем пользователя user2 в существующий файл паролей htpasswd.exe , запросив пароль интерактивно
После окончания заведения всех логинов файл нужно загрузить на сервер.
Назначение и использование файла .htaccess
Файл .htaccess (обратите внимание, что первый символ в названии файла — точка) применяется для управления веб-сервером Apache со стороны конечного пользователя хостинга. Вы помещаете в этот файл директивы, которые веб-сервер воспринимает и обрабатывает, выполняя действия в соответствии с настройками, которые были сделаны пользователем.
Файл .htaccess может быть размещен в корневом каталоге веб-сервера (прямо в каталоге www). В этом случае директивы из такого .htaccess действуют по всему веб-серверу. Также .htaccess может находиться и в конкретном подкаталоге сервера. Тогда директивы, которые указаны в этом файле, «перекрывают» действие директив из «основного» файла, который размещен в каталоге www или в любом каталоге более высокого уровня. То есть, действие директив из .htaccess наследуется сверху вниз, но не наоборот. Изменения, внесенные в файл, вступают в силу немедленно. Это связано с тем, что информация из .htaccess перечитывается при каждом обращении к веб-серверу Apache.
В .htaccess может быть помещено большинство из доступных директив для веб-сервера. Следует заметить, что директивы, в описании которых в поле Context отсутствует упоминание .htaccess недоступны для использования в этом файле конфигурации. На примере директивы AddType видим, что поле Context содержит упоминание о .htaccess , соответственно вы можете ее использовать:
Если использовать нужную директиву не получилось, и вы увидели ошибку после добавления директивы в .htaccess , скорее всего, использование команды запрещено в условиях виртуального хостинга. Напишите в техническую поддержку, мы постараемся вам помочь. Просьба подробно описать проблему и указать цели, которых хотите достичь использованием данной директивы.
Пример: переопределение индексного файла
Получив .htaccess с таким содержимым, веб-сервер Apache откроет по умолчанию именно файл myindex.php.
Индексный файл
По умолчанию индексными файлами являются следующие: index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm или default.html. Если вы хотите чтобы первым открывался какой-то иной файл, нужно переопределить текущие значения. Как это сделать читайте здесь.
Установленные модули Apache
Список стандартных и дополнительных модулей для веб-сервера Apache, которые установлены на хостинговых машинах:
- mod_env
- mod_log_config
- mod_mime
- mod_include
- mod_autoindex
- mod_dir
- mod_cgi
- mod_actions
- mod_alias
- mod_rewrite
- mod_access
- mod_auth
- mod_expires
- mod_setenvif
- mod_php
- mod_headers
- mod_security
Наши пользователи могут конфигурировать и использовать данные модули в рамках, которые предусмотрены техническими стандартами и тарифным планом конкретного пользователя.
Профессионалы знают, что такое htaccess.
Тем кто собираются уйти с народ.ру на php-хостинг только предстоит узнать, что это такое.
Те кто только что установил свои первые jooml'у или wordpress срочно должны узнать о нашем герое — htaccess
Web Application Firewall
Web Application Firewall (ModSecurity) необходим для обнаружения и предотвращения атак на веб-сайты. Проверка осуществляется определенным набором правил и, если она не пройдена, запрос к сайту отклоняется с ошибкой (403 forbidden).
- SecRuleRemoveById - удалить правило по id [id:""]
- SecRuleRemoveByTag - удалить правило по тегу. [tag: ""]
Определить, какое именно правило необходимо отключить, можно в журнале ошибок error.log
Пример отключения по ID :
Примеры отключения по Tag :
Установка веб сервера на windows
Настройка apache (эта статья)
Бесплатный ДНС сервер
Настройка php
Настройка mysql
Настройка phpmyadmin
Настройка sendmail
Настройка ftp сервера FileZilla
Пример: собственные страницы ошибок
Пример: запрет доступа с некоторых IP-адресов
Иногда возникает необходимость запретить доступ к сайту или его части с некоторых IP-адресов.
В таком случае необходимо создать в нужной директории файл .htaccess с директивами. Например, чтобы запретить доступ с IP-адреса 172.16.16.16:
Теперь при попытке обратиться к сайту с IP-адреса 172.16.16.16 посетитель получит ошибку 403 или вашу страницу для этой ошибки.
Указание части адреса в виде 172.16.16 ограничит доступ из подсети 172.16.16/24.
Иногда требуется выполнить обратное действие и заблокировать доступ к сайту для всех IP кроме вашего (как узнать мой IP?). Например, чтобы открыть доступ только для IP-адреса 172.16.16.16, добавьте следующую инструкцию в файл .htaccess:
С более подробной документацией вы можете ознакомиться в документации по Apache.
Пример: запрет и разрешение выдачи листинга
В ряде случаев требуется выводить список файлов в каталоге (листинг каталога) в случае отсутствия в каталоге файла, который показывается по умолчанию. Для этого необходимо добавить в .htaccess следующую строку:
Файл .htaccess необходимо создавать именно в том каталоге, в котором планируется разрешить листинг. Данная директива будет действовать также и на все подкаталоги (это достигается включенной по умолчанию в настройках виртуального хоста директивой AllowOverride All).
Если кодировка в именах файлов отображается не корректно, воспользуйтесь свойством Charset, чтобы указать нужную кодировку. Например для отображения кириллических символов в кодировке UTF-8 добавьте в файл .htaccess следующую инструкцию:
Пример: особенность переадресации на синонимах
Такова особенность работы модуля mod_dir, при которой если происходит запрос файла, являющегося директорией, но запрос не оканчивается знаком слэш, то mod_dir осуществляет внешнюю переадресацию на тот же адрес со знаком слэша в конце. В случае синонима при переадресации заменяется и имя домена.
Если такое поведение веб-сервера вас не устраивает, добавьте в файл .htaccess следующие строки:
О создании переадресаций с другими условиями вы можете узнать из документации по web-серверу Apache.
Переопределение кодировки:
Для этого перейдите в раздел «Услуги» выберите виртуальную площадку и нажмите на домен, для которого необходимо изменить тип кодировки. Далее в списке параметров найдите строчку Кодировка (по умолчаниию) и нажмите на кодировку, как показано на рисунке ниже.
Изменить кодировку можно также с помощью файла .htaccess . Для этого добавьте в него строку
Если на вашем ресурсе существуют html-документы в разных кодировках, (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), то вам, возможно, будет необходимо отключить принудительную выдачу заголовка с кодировкой windows-1251. Для этого в .htaccess добавляется строка:
При этом соответствующая кодировка должна быть прописана на каждой html-странице в виде тега
Пример: управление кэшированием
Для того, чтобы сайт работал максимально эффективно, целесообразно устанавливать время кэширования для различных типов файлов на максимально возможный срок. Для этого существует модуль Apache mod_expires.
Настройка параметров модуля mod_expires производится в файле .htaccess, что позволяет сделать индивидуальные настройки для каждого каталога.
В приведенном ниже примере отключено кэширование для текстовых документов, установлен период обновления для файлов с расширением gif — 3 месяца с момента изменения файла, для файлов с расширением jpeg — 1 день с момента обращения:
Примечание: При использовании Parser если вам необходимо полностью исключить заголовки от модуля Apache mod_expires, то для этого необходимо в директории с parser3.cgi создать файл .htaccess и внести в него следующую директиву: ExpiresActive off
Пример: заголовок last-modified
Реализуется это следующим образом:
Внимание: команда header должна выполняться в php-скрипте до того, как скрипт начнет выдавать html-текст в браузер пользователя.
Полезные ссылки по теме:
Установка веб сервера на windows
Настройка apache (эта статья)
Бесплатный ДНС сервер
Настройка php
Настройка mysql
Настройка phpmyadmin
Настройка sendmail
Настройка ftp сервера FileZilla
Читайте также: