Мы будем Вам признательны, если Вы поддержите проект Open SLAED и используя Ваши возможности, разместите наш пресс-релиз на страницах своих сайтов, проектов, форумов, блогов. Текст пресс-релиза, возможно, видоизменить под Ваш формат, не искажая смысл. Пресс-релиз можно взять на данной странице.
Strike - утилита разбивки дампа базы на меньшие части.
Если сервер Вашего хостинга не успевает принять за разрешенное хостером время полный backup-файл вашей базы данных, то предварительно разделите файл на части с помощью утилиты Strike. Утилита работает под Windows - дамп следует обрабатывать на своем компьютере, а не на сервере.
Вызов: strike.exe filename[.ext] [size_in_bytes]
Пример: strike.exe my_dump.sql 5000000 означает копирование файла my_dump.sql построчно в файлы my_dump_1.sql, my_dump_2.sql и т.д. каждый размером примерно 5 мегабайт.
Все строки из файла filename[.ext] копируются в файлы 'filename_1[.ext]', 'filename_2[.ext]' и т.д., длина каждого приблизительно равна size_in_bytes байтов.
По умолчанию размер новых файлов равен 20 мегабайтам. Подбирайте параметр size_in_bytes байт опытным путем по удовлетворению ограничениям Вашего хостера.
Проверьте начало и конец каждого созданного утилитой файла, по потребности заархивируйте, далее поочередно загружайте в базу хостера обычным для Вас порядком.
Usage: strike.exe filename[.ext] [size_in_bytes] All lines from 'filename[.ext]' will be copied onto files named as
'filename_1[.ext]', 'filename_2[.ext]', etc. every one will be about
'size_in_bytes' length. (Default 20Mbytes) (c) 2006 by sweeper[at]civfanatics.ru
Вы уже, наверное, в курсе, что группа разработчиков ядра PHP 6 встречалась в ноябре 2005 года в Париже. Это была захватывающая встреча, на которой разработчики обсудили развитие PHP со своей точки зрения. Прежде чем я начну свой рассказ о принятых решениях, вынужден предупредить – все что здесь перечислено, это не «100% решенные вопросы» и в окончательном релизе PHP 6 дела могут обстоять иначе. Конечно же, все эти моменты будут обсуждаться подробнее, но уже сейчас можно говорить о перспективах.
Окончательные релизы PHP 6 появятся не скоро, но профессиональные разработчики должны знать к чему готовиться...
Юникод
Поддержка юникода в настоящий момент может быть установлена только на уровне «per request», т.е. для каждого запрашиваемого файла. Это означает, что PHP придется сохранять варианты классов, имен методов и функций одновременно в таблице символов Unicode и в non-Unicode, что, конечно же, увеличивает количество потребляемых ресурсов. Разработчики решили сделать настройку юникода на уровне всего сервера, а не запроса. Отключение поддержки юникода, если таковая не требуется, может увеличить производительность строковых функций до 300% и приложений в целом до 25%. Вынос настроек в php.ini позволит снять заботу о юникоде с разработчика и переложить ее на администраторов хоста.
Если вы самостоятельно собираете PHP и несете всю ответственность за ваши серверы, то вам будет полезно знать, что для PHP 6 потребуются библиотеки ICU (в зависимости от того, будет ли нужен Unicode или нет).
Register Globals уйдут в прошлое
Попрощайтесь с этой настройкой, она будет окончательно убрана. Такой настройки больше не будет в php.ini и если вы ее внесете, то получите ошибку уровня E_CORE_ERROR. Это означает, что PHP 6 наконец-то завершит эру скриптов PHP 3. Это серьезный, но очень нужный шаг.
Magic Quotes будут исключены
Опция magic quotes будет так же исключена из PHP и при попытке включения такой настройки, «выскочит» ошибка E_CORE_ERROR. Это повлияет на magic_quotes, magic_quotes_sybase и magic_quotes_gpc.
Больше не будет Safe Mode
Это понравится тем, кто хостится на серверах с обязательным включением Safe Mode. Теперь, включение опции будет вызывать ошибку E_CORE_ERROR. Причиной для этого становится механизм посыла «сигнала опасности», который делает PHP более безопасным. Сохранится лишь open_basedir.
'var' будет полным алиасом 'public'
Var используется в классах PHP 4. В объектном подходе PHP 5, употребление var вызывает ошибку уровня E_STRICT. В PHP 6 предупреждение об ошибке будет устранено и var станет полным синонимом public. Это вполне нормальное решение, однако, те, кто «подогнал» свои скрипты под PHP 5, сделали в этом плане лишнюю работу.
Возврат по ссылке вызовет ошибку
И '$foo =& new StdClass()' и 'function &foo' теперь вызовут ошибку уровня E_STRICT.
Будет убрана совместимость с zend.ze1
Ze1 всегда пытался поддерживать старое поведение PHP 4, но не всегда «работал на 100%», поэтому в шестой версии PHP он будет полностью исключен.
Поддержка Freetype 1 и GD 1 будет убрана
Поддержка обоих (очень-очень старых) библиотек будет убрана.
dl() останется только в SAPI
Каждую функцию SAPI нужно будет регистрировать отдельно и только CLI и embed SAPI будут работать с этого момента. В других вариантах dl() работать не будет.
FastCGI всегда включена
FastCGI код будет «вылизан» и станет включенным по-умолчанию для CGI SAPI. При этом, поддержку FastCGI будет невозможно отключить.
Старые названия глобальных массивов будут удалены
Помните старые массивы HTTP_*_VARS? Если вы еще не начали использовать $_GET и $POST, то начните делать это прямо сейчас, потому что в PHP 6 эти массивы будут вызывать E_CORE_ERROR.
Перемещения расширений
Расширения XMLReader и XMLWriter войдут в дистрибутив и станут доступны по умолчанию. Расширение ereg для работы с регулярными выражениями переедет в PECL (т.е. будет удалено из PHP). Это означает, что PCRE будет по умолчанию недоступно и выключено. Такой шаг делается для включения нового расширения для работы с регулярными выражениями, основанными на ICU. Чрезвычайно полезное расширение Fileinfo будет включено в дистрибутив и доступно по умолчанию.
Дополнения к движку PHP
64 битный целочисленный тип данных
В движок будет добавлен новый тип данных -int64. Он будет использоваться поумолчанию для integer.
Goto
Никаких команд goto не будет добавлено. Однако, команда break расширится статической меткой, поэтому будет возможно написать break foo и это перекинет на метку foo: в вашем коде.
ifsetor()
Похоже, что мы не увидим эту функцию, что обидно. В операторе ?: можно будет опускать один параметр, что позволит писать так: "$foo = $_GET['foo'] ?: 42;" (т.е. если foo является истиной, то $foo будет равно 42). Это сэкономит немного кода, однако будет не так читаемо, как при использовании ifsetor().
foreach для многоуровневых массивов
Это отличное новшество – вы сможете проходить с помощью foreach по нескольким уровням массива, к примеру "foreach( $a as $k => list($a, $b))".
{} против []
Сейчас вы можете использовать и {} и [] для обращения к строковым индексам. Однако, запись {} уже сейчас вызовет E_STRICT в PHP 5.1 и будет полностью устранена в PHP 6. К тому же, [] частично заменят substr и array_slice и вы сможете использовать "[2,]" для получения символов от второго и до конца строки. Очень удобно.
Изменения в объектном стиле
Связка static
Будет добавлено новое ключевое слово для доступа к последующей связке – static::static2(), что позволит управлять static во время выполнения.
Пространства имен
Этот момент остается нерешенным и по сей день. Мой совет – не задерживайте дыхание.
Типизированные значения при возврате из функций
Разработчики высказались против типизации, потому как это «не в стиле PHP». Однако такая возможномть будет добавлена, но не решен вопрос ее синтаксиса. В любом случае, это будет полезная возможность.
Вызов динамческих функций как статических приведет к E_FATAL
Сейчас вы можете вызывать статические и динамические методы не обращая внимание на то, статические они или динамические. Вызов динамической функции как статической, вызовет E_FATAL.
Добавления в PHP
APC войдет в ядро
Работа APC с байткодом будет включена в основную поставку PHP в качестве стандарта, но, вероятно, не будет активизирована по-умолчанию, но результаты ее работы будут стимулировать хостеров включать эту опцию.
Hardened PHP патч
Этот патч выполняет большое количество дополнительных проверок на безопасность. Разработчики тщательно изучают этот патч и некоторые элементы найдут свое место в PHP: защита от разделения HTTP-запроса, allow_url_fopen будет разделена на две: allow_url_fopen и allow_url_include. Первая опция будет по-умолчанию включена, а вторая – отключена.
E_STRICT войдет в E_ALL
Вау, это серьезная штука! Сообщения об ошибках наконец-то войдут в E_ALL по умолчанию. Это демонстрирует старания разработчиков научить «лучшей практике программирования» посредством сообщений «Эй, ты делаешь неправильно!».
Прощайте asp-тэги <%
Будет удалена поддержка ASP-тэгов, но останутся короткие PHP-тэги <? ?>.
Заключение
PHP 6 движется в интересном направлении – разработчики PHP начали направлять программистов на правильный путь, вместо того чтобы упреждать «так делать не надо, потому что это устарело». Категоричное искоренение таких моментов как register globals, magic quotes, long arrays, {} string indexes и call-time-pass-by-references наконец-то заставит программистов «вычистить» свой код. Плохо ли это? Я так не думаю, но все это сделает переход на PHP 6 еще более медленным, чем мы наблюдаем с PHP 5 (который итак происходит ужасно!).
Официальная информация: http://www.php.net/~derick/meeting-notes.html
Оригинал статьи: http://www.corephp.co.uk/archives/19-Prepare-for-PHP-6.html
Автор: Richard Davey
Перевод: Андрей Олищук
Источник: http://phpclub.ru
Все, изложенное мной, является плодом более чем 3-летнего опыта в области оптимизации сайтов и практических наблюдений. Таким образом, мои рекомендации будут носить в большей степени субъективный практический характер, чем теоретический. Сразу предупреждаю, что все мои советы актуальны для владельцев серьезных тематических ресурсов, а не всяких дурацких развлекательных порталов, цель которых – привлечь абы кого, чтобы только заработать баннерные показы или накрутить счетчик.
Продвижение сайта - Заголовки
Итак, я открываю серию статей, посвященных продвижению интернет-сайта в сети. Все, изложенное мной, является плодом более чем 3-летнего опыта в области оптимизации сайтов и практических наблюдений. Таким образом, мои рекомендации будут носить в большей степени субъективный практический характер, чем теоретический. В моих статьях я не буду тратить время на всякие системы накрутки счетчиков, обмена посетителями и прочую подобную фигню. Продвижение в моем случае прежде всего означает оптимизацию страниц сайта под поисковые роботы + различные советы и тонкости из практики. Надеюсь, вам будет интересно и кому-нибудь мои советы даже помогут в увеличении целевой аудитории, посещающей ваш сайт.
Будем считать, что вы хорошо владеете программированием на HTML и знаете, для чего нужны различные тэги и куда их пихать, поэтому на технической стороне я не буду заострять внимание. Говоря о заголовке, я имею в виду содержание страницы от тэга ‹HEAD› до тэга ‹/HEAD›. Напомню, что структура стандартной страницы представляет из себя примерно следующее:
Как раз о верхней части страницы и пойдет речь в этой статье, т.е. подробно о тегах TITLE и META.
TITLE
Надеюсь, вы уже догадались, что TITLE – это титул страницы. Пользователь видит его в верхней части окна браузера. Тэг TITLE прежде всего имеет важное значение при оптимизации страницы под поисковые машины. Все без исключения поисковые роботы обрабатывают значение TITLE и в соответствии с его содержанием формируют перечень ключевых слов и фраз страницы. Таким образом, титул должен отражать реальное содержание страницы или сайта. Однако при заполнении этого параметра многие совершают следующие ошибки:
Начинают перечислять перечень ключевых слов. Современные поисковые роботы стали гораздо сообразительней, чем раньше и в большинстве случаев им удается распознать, что в титуле написана белиберда, а не четкое и внятное содержание страницы. Это может привести к тому, что поисковик проигнорирует титул при индексации;
Вбивают текст размером с первый том "Капитала" Карла Маркса. Дело в том, что поисковые роботы серьезно относятся к содержимому тэга TITLE, но обычно индексируют первые 25-50 символов. Таким образом, оставшаяся писанина только напрасно увеличивает объем страницы и время загрузки;
Перегружают титул спецсимволами (запятыми, кавычками, тире и пр. знаками). Спецсимволы в TITLE не индексируются поисковыми роботами, так что их использование лучше свести к минимуму, или вообще постараться обойтись без них;
Пишут содержание TITLE прописными (заглавными) буквами. Многие поисковики этого не любят. Так что лучше их не злить понапрасну и писать нормально. От того, что вы напишете титул прописными, заметней для поисковика вы не станете!
В общем, рекомендую перед заполнением тэга TITLE как следует подумать, о чем ваш сайт и выразить его тематику в 2-3 веских словах в виде словосочетания.
META
О тэге META у нас будет разговор серьезный. Прежде всего необходимо понять, что META-тэги являются важной составляющей в странице и их правильное использование может как поднять популярность страницы, так и оказать обратное воздействие.
META-тэги делятся на две группы: контролирующие отображение страницы браузером и служащие ценной информацией для поисковых машин. Первая группа тэгов вводится следующим образом:
‹META HTTP-EQUIV="параметр" CONTENT="значение"›
Я не буду заострять внимание на этом виде META-тэга, т.к. моя задача – рассказать, как сделать страницу доступной, а не как сделать, так, чтобы она правильно отображалась браузером. Но чтобы вы поняли, для чего нужны эти META-тэги, приведу несколько примеров их использования:
Указывает, в какой кодировке должна выводиться страница (в данном случае: windows-1251). Также возможны значения (в поле CHARSET): koi8-r, iso-8859-5, iso-8859-1 и т.д.
Указывает типы переменных, содержащихся на странице (в данном случае: текст и JavaScript™). Возможные значения: text, javascript, php и т.д.
‹META HTTP-EQUIV="pragma" CONTENT="no-cache"›
или
‹META HTTP-EQUIV="no-cache›
или
‹META HTTP-EQUIV="cache-control" CONTENT="no-cache"›
или
‹META HTTP-EQUIV="expires" CONTENT="wed, 2 mar 1996 00:00:05 GMT"›
Запрет на кэширование браузером страницы. Тэг актуален в том случае, если содержимое страницы часто меняется. В этом случае браузер будет при каждом обращении к странице заново ее кэшировать.
Сообщает браузеру язык, на котором написана страница (в данном случае: английский и русский). Возможно указать и один язык (например, только "ru") или несколько через запятую. Сразу скажу, что этот тэг актуален только для очень старых браузеров, а новые на него внимания не обращают, так что лучше его избегать.
Принудительно осуществляет переход на указанную страницу через определенное количество секунд (в данном случае: переход на страницу "http://yandex.ru/index.html" через 5 секунд).
Существует еще с десяток META HTTP-EQUIV тэгов, но, на мой взгляд, они бестолковые и не оказывают существенного влияния на отражение страницы. Или предназначены для устаревших версий браузеров, которые практически уже не используются. Советую не увлекаться такими тэгами и обратить внимание прежде всего на первый пример, выдающий кодировку документа – он является обязательным; остальные же используйте только по необходимости!
Второй тип META-тэгов вводится следующим образом:
‹META NAME="параметр" CONTENT="значение"›
Эти META-тэги никак не влияют на отображение страниц сайта, но играют важную роль в предоставлении информации поисковым роботам и указывают на алгоритм индексирования. В общем, служат чем-то вроде паспорта для страницы. Поскольку известно, что основная доля трафика генерируется поисковыми роботами, необходимо отнестись с полным сурьезом к заполнению значений этих тэгов. Ниже я привожу примеры значений с необходимыми комментариями:
‹META NAME="description" CONTENT="..."›
В поле CONTENT вы должны ввести краткое описание документа. Ни в коем случае не строчите трактат длинной в жизнь и не перечисляйте ключевые слова! Правильным будет написание небольшого предложения длинной до 200-250 символов, в котором повествуется, о чем ваш сайт (страница) и что на нем можно найти. Избегайте большого количества спецсимволов, слов из прописных букв и бессмыслицы (например, "Это чумовой сайт! Все сюда!"). Содержание параметра DESCRIPTION часто отражается в результатах поиска и вносится в базу данных поисковика. Так что чем точнее и лаконичней будет сформулировано описание сайта, тем лучше!
‹META NAME="keywords" CONTENT="..."›
В поле CONTENT вы должны внести через запятую (!) перечень ключевых слов и фраз, в соответствии с которым будет строиться запрос поисковым роботом. Только не надо вносить весь словарь Ожегова и/или Даля! Во-первых, поисковики обычно обрабатывают только первые n-цать символов в строке CONTENT (в среднем до 500). Во-вторых, ключевые слова и фразы должны отражать реальное содержимое страницы. В противном случае поисковый робот отсекает ненужное и часть содержимого KEYWORDS просто зазря засоряет страницу. Существует расхожее мнение, что сейчас поисковые роботы практически не уделяют внимания значению параметра KEYWORDS. Действительно, в процессе эволюции поисковики стали меньше обращать внимания на ключевые слова, потому что многие нехорошие люди занимались банальным поисковым спамом и вносили в KEYWORDS совсем не то, что было отражено на странице. Тем не менее, актуальность этого META-тэга еще до конца не утрачена и заполнять его все-таки рекомендуется.
Сообщает поисковому роботу частоту обновлений содержимого. В соответствии с этим страница может быть статичной (static), т.е. обновления происходят время от времени, редко или совсем не происходят; или динамичной (dynamic), которая обновляется часто (например, страница новостей). В поле CONTENT необходимо записать только одно из значений ("static" или "dynamic"), в соответствии с характером страницы. Некоторые "умники" пытаются обдурить поискового робота, объявляя статичную страницу динамичной, в надежде на то, что ее рейтинг повысится. Поисковик очень быстро вычисляет таких мошенников, отслеживая дату изменения файла страницы и характер изменений ее содержимого. В итоге можно отправиться в бан-лист, из которого путь будет не так прост. Чтобы этого не произошло, постарайтесь либо писать правду, либо вообще не употреблять этот параметр. Без него поисковик тоже в состоянии разобраться, какая эта страница и как часто ее переиндексировать.
‹META NAME="revisit-after" CONTENT="..."›
Тэг почти аналогичен предыдущему и указывает, через какой промежуток времени поисковик должен переиндексировать страницу. Опять-таки лучше не дразнить поискового робота и указывать реальное значение. Если у вас не лента новостей с ежедневным, еженедельным или прочим регулярным обновлением, то лучше этот параметр вообще не использовать. Если все-таки возникла такая необходимость, то значения поля CONTENT могут быть такими: day (пример: 1 day), days (пример: 7 days), week (пример: 1 week), weeks (пример: 2 weeks), year (пример: 1 year), years (пример: 5 years). Выражать промежуток времени можно различными значениями, но только одним из них. Например, 1 год можно записать как "1 year" или "365 days", или "52 weeks". Но недопустимо употребление сразу нескольких значений. Например, "1 year 2 weeks 3 days"!
‹META NAME="robots" CONTENT="..."›
Это очень важный тэг, который указывает поисковику, каким образом ему необходимо индексировать страницу. Возможные значения поля CONTENT:
index, follow – индексировать страницу и все ссылки на ней
index, nofollow – индексировать страницу, не индексировать ссылки
noindex, follow – не индексировать страницу, а только ссылки
noindex, nofollow – не индексировать страницу, не индексировать ссылки
all – равнозначен index, follow
none – равнозначен noindex, nofollow
Если вам все равно, как поисковый робот будет индексировать содержимое страницы, то лучше вообще этот параметр не использовать, т.к. в этом случае поисковик определит наиболее оптимальный и эффективный способ индексации. Если вдруг вам необходимо запретить на индексацию часть содержимого страницы, а другую оставить, то необходимо поместить запрещенный для поисковых роботов блок в тэг ‹NOINDEX›...‹/NOINDEX›. В этом случае META-тэг с параметром "robots" использовать не надо.
Существует еще целая куча META-тэгов подобного вида, всесторонне описывающая содержимое страницы, включая данные о ее создателе, генераторе, классификации и т.п. Отталкиваясь от практического опыта могу заметить, что ничего, кроме, засорения страницы и увеличения ее объема, они по сути не делают. Так что лучше ограничиться использованием вышеуказанных тэгов, которые являются основополагающими.
Итак, мы рассмотрели с вами основные требования к написанию заголовка страниц таким образом, чтобы их успешно и правильно индексировали поисковые роботы. Если вы все сделаете правильно, то уже через некоторое время (от 2 недель до месяца) вы заметите, что поисковые роботы стали лучше вас видеть и посетители стали лучше вас находить. Закрепляя вышесказанное, хочу привести пример, как может выглядеть идеальная для поисковика страница:
‹HTML›‹HEAD›‹TITLE›Справочник по META-тэгам‹/TITLE›
Для разных людей термин "веб-стандарты" означает разные вещи. Для некоторых это просто "страницы без таблиц", для других - "правильный код". Однако веб-стандарты это нечто намного большее. Сайт, простроенный по веб-стандартам, это сайт, который придерживается стандартов (HTML, XHTML, XML, CSS, XSLT, DOM, MathML, SVG и т.д.) и лучших отработанных решений (валидный код, доступный код, семантически правильный код).
Указан ли у страниц правильный Doctype?
Doctype (сокращенно от 'document type declaration' - "декларация типа документа") сообщает валидатору, какая версия (X)HTML используется в вашей странице. Декларация должна присутствовать в начале каждой веб-страницы. Doctype - ключевой компонент страницы, претендующей на соответствие стандартам: ваша разметка и CSS не пройдут валидацию, если в вашем документе отсутствует Doctype.
Указан ли у страниц кодировка (charset)?
Если пользовательский агент (например браузер) не может самостоятельно определить кодировку вашей веб-страницы, пользователи увидят на экране нечитаемый текст. Эта информация в особенности важна для тех, кто создает и поддерживает многоязычные веб-сайты. Но вообще объявление кодировки очень важно для тех, кто создает страницы в XHTML/HTML и CSS.
Валиден ли (X)HTML код страниц сайта?
Валидный код браузер выведет быстрее, чем невалидный. Валидный код браузер выведет лучше, чем невалидный. Все больше и больше браузеры подчиняются стандартам, и потому все более важным является валидный и стандартный HTML-код.
Валидны ли CSS-таблицы сайта?
Не забывайте убедиться, что ваш HTML-код и CSS-страницы не содержат ошибок, так как ошибки приведут к искаженному отображению документа на экране.
Использует ли сайт какие-либо CSS-хаки?
В сущности каждый сам решает, какие хаки ему использовать. Это зависит от того, насколько хорошо вы знакомы со всеми вариантами, и от того, какой дизайн вы хотите создать.
Используются ли на сайте какие-либо лишние и ненужные классы (class) и идентификаторы (id)?
Я заметил, что разработчики, осваивая новые приемы и технологии, часто создают замечательные CSS-таблицы, и при этом - плохой XHTML-код. В особенности часто в XHTML-коде встречаются ненужные и лишние "div" и "id". Из-за этого HTML-код теряет стройность, а CSS-файлы становятся запутанными.
Хорошо ли структурирован код страниц?
Семантически правильная разметка подразумевает использование html-элементов по их прямому назначению. Хорошо структурированный HTML-документ хорошо воспринимается всем спектром пользовательских программ (браузерами без поддержки стилевых таблиц, текстовыми броузерами, наладонниками, поисковыми роботами и т.д.)
Есть ли на сайте "сломанные" ссылки?
"Сломанные" ссылки разочаровывают пользователей и потенциально отвращают от вашего сайта ваших клиентов. "Сломанные" ссылки могут также сказаться на том, как поисковые роботы будут индексировать ваш сайт.
Как у сайта со скоростью загрузки страниц и с их размерами?
Не заставляйте меня ждать... Вот какую мысль подразумевают пользователи при проведении всех исследований. Даже пользователи с широким каналом устают от медленной загрузки.
Выдает ли браузер какие-либо ошибки JavaScript при работе со страницей?
Internet Explorer для Windows позволяет включить отладчик, который будет выскакивать на экран всякий раз, когда на странице будет обнаружена ошибка в JavaScript. Эта опция находится в меню "Internet Options" на закладке "Advanced". Уберите галочку с пункта "Disable script debugging".
Используется ли на сайте CSS для всех аспектов оформления страницы?
Используйте стилевые таблицы для управления компоновкой страницы и ее внешним видом.
Перенесены ли вся декоративная графика в CSS, или она все еще встречается в (X)HTML-коде?
Ваша цель, как веб-разработчика, состоит в том, чтобы убрать из html-кода вашей страницы все оформительские элементы. Благодаря чему код станет чище и семантически правильнее.
Используется ли атрибут "alt" во всех значимых изображениях?
Каждый нетекстовый элемент сопровождайте текстовым описанием.
Используется ли на сайте для шрифта относительные единицы измерения вместо фиксированных?
В коде и в стилевых таблицах используйте относительные, а не абсолютные единицы для указания размеров элементов.
Ломается ли каким-либо образом компоновка страницы при увеличении размера шрифта?
Проведите простой тест. Откройте свой веб-сайт в любом браузере, где есть функция изменения размера шрифта. Теперь увеличьте размер шрифта. Еще раз увеличьте. И еще раз... Посмотрите на свой веб-сайт. По-прежнему ли компоновка страницы осталась неизменной? При разработке сайта не рассчитывайте, что у посетителя в браузере размер шрифта совпадает с вашим.
Используются ли на сайте доступные формы?
Формы на веб-страницах не самая простая вещь для людей с физическими недостатками. Одно дело - навигация по странице с текстовым материалом, и совсем другое - переход по полям формы и ввод информации в нее.
Используются ли на сайте доступные таблицы?
Что касается таблиц. Не забудьте указать заголовки для столбцов и рядов... Для таблиц, где имеются два и более логических уровней рядов и столбцов, воспользуйтесь вспомогательными элементами языка html, чтобы связать логически ячейки данных с ячейками заголовков.
Достаточно ли контрастны и ярки цвета на страницах сайта?
Убедитесь, что разница между цветом фона и цветом текста достаточно контрастна, чтобы не вызывать затруднений при чтении у людей с пониженным восприятием цвета.
Используется ли только цвет для выделения критической информации?
Убедитесь, что вся важная информация, выделенная цветом, также выделена при отсутствии цвета, например с помощью контекста или элементами логической разметки.
Используется ли задержка в выпадающих меню (для пользователей с медленной моторикой)?
У людей с медленной моторикой могут возникнуть трудности при работе с меню, которые для них будут работать слишком быстро.
Все ли ссылки содержат достаточно описательный текст (для слепых пользователей)?
Ссылки должны быть достаточно понятными, чтобы они имели смысл при чтении вне контекста - либо при простом чтении или при чтении в виде списка.
Достаточно ли хорошо сайт работает и в современных и в старых браузерах?
Прежде чем начинать верстать страницы с использованием CSS, определитесь, какие браузеры вы собираетесь поддерживать и до какой степени.
Можно ли работать с материалами сайта при отключенном CSS?
На ваш сайт могут зайти люди, у которых браузер не поддерживает CSS или поддержка CSS отключена. Если ваши страницы правильно структурированы, у таких посетителей не возникнет никаких проблем при работе с ними.
Можно ли работать с материалами сайта при отключенных изображениях?
Некоторые пользователи просматривают веб-сайты не загружая графические элементы страниц. Так поступают в особенности те, у которых подключение к Интернету слишком медленное. Ваши страницы не должны вызывать затруднений в работе у таких посетителей.
Работает ли сайт в текстовых броузерах, таких как Lynx?
Текстовый браузер это как бы комбинация отключенных графики и CSS. Текстовые браузеры полагаются целиком на структуру документа при создании изображения на экране.
Хорошо ли выглядит сайт при распечатке?
К любому (X)HTML-документу можно прикрепить стиль для вывода на печать и для этого не потребуется трогать разметку самого документа.
Хорошо ли работает ли сайт на наладонных устройствах?
Этот момент вызывает наибольшие затруднения, так как в настоящее время нет единообразия в том, как наладонные устройства поддерживают веб-страницы. Однако некоторые решения в компоновке страниц поддерживаются на наладонниках лучше, чем другие. Поддержка наладонных устройств зависит от целевой аудитории вашего сайта.
Работает ли сайт в окнах различных размеров?
Среди веб-разработчиков бытует устойчивое убеждение, что с каждым годом средние размеры экрана у посетителей растут. Некоторые разработчики убеждены, что средний размер экрана у посетителей их сайтов составляет по ширине 1024 пикселей. Ну а что насчет пользователей с меньшими размерами экранов или с владельцами наладонников? Являются ли они частью вашей целевой аудитории, и будут ли они испытывать затруднения при работе с вашим сайтом?
Имеется ли на странице четкая визуальная иерархия элементов?
Организуйте и выделяйте важность того или иного материала с помощью размеров, отступов и логических связей.
Легко ли отличить один уровень заголовков от другого?
Используйте заголовки для того, чтобы раскрыть структуру документов, при этом используйте их в соответствие со спецификацией.
Достаточно ли легко понять навигацию по сайту?
Навигация вашего сайта должна подсказывать посетителю, на какой странице сайта он сейчас находится и куда он может следовать дальше.
Используется ли однообразная навигация на всех страницах сайта?
Если на каждой странице вашего сайта навигация придерживается одного и того же стиля, посетителям легче будет работать с сайтом и они быстрее будут находить нужную им информацию.
Используется ли на сайте приемлемый и однообразный язык текстов?
Ясный и простой язык материалов позволяет эффективно вести диалог с посетителем. Не забывайте, что ваш сайт могут читать пользователи, для которых ваш язык не является родным.
Есть ли у сайта карта и страница с контактной информацией? Легко ли их найти?
Большинству карт сайтов не удается раскрыть многоуровневую структуру архитектуры сайта. В тестах на юзабилити пользователи часто игнорируют карту сайта или просто не могут ее найти. Сложность карты также является проблемой: карта должна быть именно картой, а не головоломкой по навигации.
Если ваш сайт очень большой, есть ли на нем инструмент поиска?
Для маленького сайта функция поиска не особенно нужна. Всегда найдутся люди, которые никогда не пользуются поиском по сайту. Тем не менее функция поиска является дополнительным хорошим инструментом навигации по сайту для посетителей.
Присутствует ли на каждой странице сайта ссылка на его главную страницу?
Многие пользователи зарывшись в глубины сайта хотят быстро попасть на его главную страницу. Главная страница является как бы отправной точкой для таких пользователей, на которой они заново собираются с силами, чтобы нырнуть в новые глубины сайта.
Подчеркнуты ли ссылки?
Для полноты восприятия пользователями ссылок текст ссылок должен быть оформлен другим цветом или подчеркнут. Посетители не должны метаться по странице в поисках ссылки.
Четко ли выделены цветом ссылки, которые пользователь уже посетил?
Самое главное, если четкое выделены ссылки, которые пользователь уже посетил, он не нажмет на них случайно, и не будет попадать на ту же самую страницу, где уже побывал.
Есть ли у сайта понятная и полезная страница ошибки 404, которая работает с любого уровня сайта?
Вы запросили страницу - либо набрав URL в адресной строке, либо щелкнув по ссылке - и обнаружили, что провалились в Ничто. Дружественные к пользователю веб-сайты подадут руку помощи потерявшемуся пользователю, а другие сайты будут рассчитывать на то, что браузер пользователь сам их как-нибудь вытащит из бездны киберпространства.
Можно ли к вашему сайту доступиться, набрав адрес без "www"?
В целом не очень критичное требование, а иногда его даже невозможно удовлетворить. Но тем не менее всегда неплохо, если у ваших посетителей есть такая возможность. Если посетитель наберет название вашего сайта без "www" и не сможет до него доступиться, это будет плохо и для вас и для него.
Есть ли у сайта пиктограмма для закладок?
Пиктограмма для закладок (favicon) это графический файл с картинкой в нескольких разрешениях. Они как правило используются на всех профессионально выполненных сайтах. Пиктограмма для закладок дает веб-мастеру еще один способ рекламы сайта. Разумеется, пиктограмма для закладок не является критичной. Однако ее отсутствие порождает волну ошибок 404 в ваших лог-файлах. Такие браузеры как IE всегда запрашивают у сервера эту пиктограмму, когда пользователь помещает ссылку на ваш сайт в закладки. Если на вашем сайте этой пиктограммы нет, в логи попадет ошибка "404 File not found". Так что наличие такой пиктограммы поможет вам значительно сократить размер файла ошибок. То же самое относится и к файлу "robots.txt".
В этой публикации мы затронем те директивы, которые не успели охватить в предыдущих частях. Эти директивы не поддаются определению на уровне директорий. Это означает то, что вы должны иметь доступ к файлу конфигурации веб сервера Apache (httpd.conf).
Обычно такой доступ имеют пользователи «root» или администратор сервера.
Если вы хотите вести логи всех операций, выполненных с помощью mod_rewrite, можно активировать это с помощью следующей записи:
Эту строку нужно вписать в «Раздел 2: Конфигурация основного сервера» в файле httpd.conf, а не в .htaccess!
Все манипуляции, произведенные mod_rewrite будут записываться в этот файл. Имя лог файла может быть любым. Вы можете указать абсолютный или относительный (относительно ServerRoot) путь к файлу.
Если вы хотите вести разные лог файлы для различных виртуальных хостов, то нужно ввести изменения в «Раздел 3: Виртуальные сервера», например так:
RewriteLogLevel может быть определен в пределах диапазона от 1 до 8. Обычно достаточно первого уровня. Более высокие уровни используются для деббагинга.
Другая директива, которая является очень удобной в целях клоакинга – это так называемая карта перезаписи. Это – файлы, содержащие пары ключ/значение, обычно в формате текстового файла:
Ключи, как вы видите, имена хостов или IP адреса. В этом простеньком примере значение всегда одно – «spider». Естественно, в реальном файле значения будут другие. Эта директива может быть записана в второй («Конфигурация основного сервера») или третий («Виртуальные сервера») раздел файла httpd.conf:
«Карта перезаписи» возымеет эффект на весь сервер.
Также, в файл .htaccess записывается:
Данные условия будут производить системную проверку: произведен ли запрос поисковиком. С этой целью производится поиск по файлу spiderspy.txt. Если ключ найден, будет возвращено значение «spider», а «условие» будет являться истинным.
Затем выполняется первый RewriteRule. Это означает то, что запрашиваемая «.htm» страница будет отдана поисковику. Переменная $1 равна части в круглых скобках «^(. *).htm$», то есть имя файла останется тем же самым.
Если же URL вызван обычным посетителем, то применяется второе «правило»: пользователь будет перенаправлен на страницу «index.html».
Поскольку «.htm» страницы будут читаться только «пауками», они могут быть оптимизированы соответственно для поисковых серверов. Вы можете также использовать файл в формате «dbm» вместо обычного текстового файла. Бинарный формат данных позволяет ускорить поиск, который является особенно важным, если вы работаете с очень большими списками поисковиков. Пример, данный выше, предлагает простые функциональные возможности клоакинга. Все обычные посетители будут всегда переадресовываться к странице «index.html» и не будет вестись никаких логов файлов вне логов mod_rewrite.
Можно заменить несколько строчек кода php (perl и т.д.) в ваших приложениях, используя всего одну-две строки mod_rewrite. Последний пример проиллюстрирует это более подробно.
Цель – показать посетителям «фото дня». Посетитель, кликнувший по ссылке http://yoursite.com/pic.html увидит лучшую фотографию или картинку дня, и так каждый день. Мы будем работать с серверными переменными: TIME_MON, TIME_DAY
Поместим в файл .htaccess одну единственную строку:
Запрашиваемый URL будет перезаписан, например: pic-08-28.html, pic-08-29.html, pic-08-30.html и так далее.
Теперь, все что вы должны сделать – это единожды загрузить файлы с соответсвующими именами и забыть о ежедневном обновлении ссылки. Переменные времени также могут использоваться для другой периодичности.
Это был последний пример в серии публикаций о замечательном модуле mod_rewrite. Естественно невозможно было затронуть все нюансы, директивы, переменные и т.д. в данной публикации, целью было другое – дать общее представление и понимание основ, и так сказать «ввести в курс дела».
В двух предыдущих частях мы познакомились с основами «правил перезаписи» URL и «условиями правил». Позвольте предложить к рассмотрению два примера, иллюстрирующих более сложные приложения. Первый пример имеет дело с динамическими страницами, а второй показывает возможности вызова «.txt» файлов и произведение различных действий над ними.
Предположим, что у нас есть виртуальный магазин по продаже каких-то товаров. Клиенты обращаются к описаниям товаров через скрипт:
Эти адреса представлены как ссылки на большинстве страниц сайта.
А теперь допустим, что вы решили добавить сайт для индексации в поисковые системы. Тут вас поджидает небольшая неприятность – не все поисковики принимают, понимают и индексируют URL, в которых содержится символ «?».
Более естественным и приемлемым для поисковика является URL вида:
http://www.yoursite.com/cgi-bin/shop.cgi/product1
В данном случае символ «?» заменяется на «/».
Еще более комфортабельный URL с точки зрения поисковика будет иметь вид:
http://www.yoursite.com/shop/product1
Для поисковика, «shop» теперь как-бы является директорией, содержащей товары product1, product2 и т.д.
Если пользователь, со страницы результатов запроса в поисковике проследует по такой ссылке, то эта ссылка должна будет трансформироваться в ссылку: shop.cgi?product1.
Чтобы добиться такого эффекта можно использовать mod_rewrite, используя следующую конструкцию в файле .htaccess:
Переменные $1 и $2 составляют так называемые "backreferences". Они связаны с текстовыми группами. Вызываемый URL разбивается на части. Все, что находится перед «shop», плюс все что находится после «shop/» определяется и хранится в этих двух переменных: $1 и $2.
До этого момента, наши примеры использовали «правила» типа:
Однако мы еще не достигли истинной перезаписи URL адресов, в смысле того, что один URL должен перенаправлять посетителя на другой.
Для нашей записи вида:
применяется общий синтаксис: RewriteRule текущийURL перезаписываемыйURL
Как видите, эта директива выполняет действительную «перезапись» URL адреса.
В дополнение к записям в файл .htaccess, нужно еще заменить все ссылки на сайте, которые имеют формат «cgi-bin/shop.cgi?product», на ссылки вида: «shop/product»
Теперь, когда поисковик найдет страницу с подобными ссылками, он проиндексирует сайт без всяких видимых проблем.
Таким образом вы можете превратить чисто динамический сайт в сайт, имеющий статическую структуру, что явно принесет пользу в вопросе индексирования различными посковыми машинами. Обратите внимание на вид URL адресов на данном сайте. Вдобавок ко всему, они имеют еще и легкочитамую для человека структуру - ЧПУ (человекопонятный УРЛ). Но об этом мы поговорим в другой статье.
В нашем втором примере мы обсудим, как переадресовать запросы «.txt» файлов к сценарию программы.
Многие хостинг провайдеры, работающие с Apache предоставляют лог-файлы в общем формате. Это означает то, что они не будут соджержать поля с ссылающимися страницами и юзер-агентами.
Однако, относительно запросов к файлу «robots.txt», предпочтительно иметь доступ ко всем этим данным, чтобы иметь больше информации о посещении поисковиков, чем просто знать их IP адреса. Для того, чтобы оганизовать это, в «.htaccess» должны быть следующие записи:
Теперь при запросе файла «robots.txt» наш RewriteRule переадресует посетителя (робота) к обрабатывающему запросы скрипту text.cgi. Кроме того, переменная передается скрипту, которая будет обработана в соответствии с вашими нуждами. «REQUEST_URI» определяет имя запрашиваемого файла. В данном примере это – «robots.txt». Скрипт прочтет содержание «robots.txt» и отправит его web-браузеру или роботу поискового сервера. Таким образом, мы можем считать хиты посетителей и вести свои лог-файлы.
С этой целью, скрипт будет использовать переменные окружения «$ENV {'HTTP_USER_AGENT'}» и т.д. Это обеспечит получение всей требуемой информации. Вот исходный текст для сценария cgi, упомянутого выше (пример взят с сайта http://fantomaster.com):
Загрузите файл с данным содержимым в корневую или в DocumentRoot директорию сервера и установите права доступа у файлу (chmod) 755. Затем, создайте каталог «stats». Более детальное описание о том, как установить скрипт вы можете получить на сайте разработчика.
Если настройки вашего сервера не позволяют исполнять cgi-сценарии в главной директории (DocumentRoot), то попробуйте следующий вариант:
Обратите внимание, что в этом случае, будет необходимо изменить пути в коде скрипта!
Наконец, вот решение задачки, данной в предыдущей части этой публикации:
Если мы пишем в регулярном выражении «^212.37.64» вместо «^212.37.64.» (с точкой в конце), то даст ли это тот же самый эффект, и будут ли исключены те же самые IP адреса?
Регулярное выражение ^212.37.64 удовлетворяет и применимо к следующим строкам:
Следовательно, последняя цифра «4» может сопровождаться любой символьной строкой. Однако, максимальным значением IP является адрес 255.255.255.255 – который подразумевает, что например 212.37.642.12 – неправильный (недопустимый) IP. Единственный допустимый IP в вышеприведенном списке – 212.37.64.12!
В прошлой главе мы познакомились с основами модуля mod_rewrite. В примере, который был рассмотрен, мы использовали конструкцию, которая в буквальном смысле означает следующее: «Если кто-то пытается получить доступ к файлу .htaccess, выдается ошибка, сообщающая, что доступ к файлу запрещен».
Это «правило» глобально, то есть каждый получит указанное сообщение об ошибке. Напомню, что mod_rewrite является модулем, который предоставляет «основанный на правилах механизм динамического изменения запрашиваемых URL-ов».
Мы можем ограничивать «правило» при помощи различных «условий правила». «Правило» будет выполнено только в том случае, если перед ним будет встречен ряд условий.
Синтаксис: условие должно предшествовать правилу!
Возьмем еще один пример (запись в файле .htaccess):
Назначение первых трех записей было подробно разобрано в первой части публикации. Их функция - включение «движка перезаписи», то есть самого модуля.
Последние две строки запрещают доступ поисковому роботу под кодовым названием «EmailSiphon» (имеется ввиду имя юзер-агента). Данный робот является сборщиком почтовых адресов с различных веб страниц.
Проверочная строка – переменная сервера, которая может быть записана в общей форме: «% {ИМЯ_ПЕРЕМЕННОЙ}».
Образец условия – регулярное выражение. Для более полного понимания темы стоит рассмотреть регулярные выражения как класс.
Регулярные выражения – это механизм, позволяющий задать шаблон для строки и осуществить поиск данных, соответствующих этому шаблону в заданном тексте. Кроме того, дополнительные функции по работе с такими выражениями позволяют получить найденные данные в виде массива строк, произвести замену в тексте по шаблону, разбиение строки по шаблону и т.п. Однако главной их функцией, на которой основаны все остальные, является именно функция поиска в тексте данных, соответствующих шаблону (образцу), описанному в синтаксисе регулярных выражений.
Регулярные выражения подобны маленькому, компактному языку программирования со своими правилами.
Например, регулярное выражение:
заменит строку «abc», на строку «xyz» во всем тексте.
Вот краткий обзор наиболее важных элементов с некоторыми примерами:
. (точка) - текст (любой символ)
| - чередование (то есть/abc|def/)
* - квантификатор (разрешено любое число)
^ $ - якоря строки
s - оператор (string1 заменить на string2)
g - модификатор (искать по всему тексту)
Регулярные выражения конструируются с помощью этих элементов и других «обычных» символов. Они не являются отдельным языком, а используются другими средствами, например языками программирования типа Perl или PHP, а также текстовыми редакторами (Emacs).
Если говорить о связи регулярных выражений и модуля mod_rewrite, то они используются в директивах RewriteRule и RewriteCond.
«^» обозначает начало строки. Из этого следует, что UserAgent должен начинаться со строки «EmailSiphon» и ни с чего другого («NewEmailSiphon», например, не работал бы).
Но, поскольку данное регулярное выражение не содержит символ "$" (якорь конца строки), UserAgent мог бы быть, например, «EmailSiphon2».
Последняя строка нашего примера:
определяет, что именно нужно делать, когда робот запросит доступ.
Регулярное выражение «^.*$» означает: «Доступ ко всем файлам запрещен».
Точка «.» в регулярном выражении – мета символ (подстановочный знак), означающий любой случайный символ.
«*» означает то, что строка может встречаться неограниченное количество раз. В этом случае, независимо от имени запрошенного файла, будет выдана ошибка.
«EmailSiphon», конечно, не единственный почтовый сборщик. Другой известный член этого семейства - «ExtractorPro». Допустим мы хотим запретить доступ и этому роботу. В таком случае нам необходимо еще одно условие.
Теперь файл .htaccess будет выглядеть так:
Третий аргумент [OR] (в первой строке RewriteCond) называется «флагом». Существуют два возможных флага:
NC – не учитывать регистр букв.
OR – означает «или следующее условие».
Флажок NC позволяет игнорировать регистр букв в искомом образце. Например:
Эта строка определяет, что и "emailsiphon" и "EmailSiphon" будут признаны как идентичные выражения.
Вы можете использовать сразу несколько флажков, разделяя их запятыми.
Нет никаких ограничений по числу условий. Таким образом, Вы можете блокировать 10, 100, 1000 или более известных почтовых сборщиков. Определение этих 1000 условий – просто вопрос загрузки сервера и прозрачности файла «.htaccess».
В вышеупомянутом примере используется глобальная переменная «HTTP_USER_AGENT». Существуют также другие переменные: REMOTE_HOST, REMOTE_ADDR
Например, если Вы хотите заблокировать паука пришедшего с www.site.ru, Вы можете использовать глобальную переменную «REMOTE_HOST» таким образом:
Если Вы хотите заблокировать определенный IP адрес, условие будет выглядеть так:
В регулярном выражении по проверке точного и полного IP адреса нужно использовать начальные и конечные якоря.
Также можно исключить целый диапазон:
Этот пример показывает, как можно заблокировать диапазон IP адресов с 212.37.64.0 по 212.37.64.255.
А вот маленькая задачка для проверки приобретенных знаний (решение будет дано в следующей части):
Внимание, вопрос!
Если мы пишем в регулярном выражении «^212.37.64» вместо «^212.37.64.» (с точкой в конце), то даст ли это тот же самый эффект, и будут ли исключены те же самые IP адреса?
До сих пор мы использовали простой RewriteRule, который генерирует сообщение об ошибках. В третьей части публикации мы проанализируем, как можно использовать RewriteRule для переадресации посетителей к определенным файлам.
Вы наверняка встречали в сети термин «mod_rewrite». Для наших читателей, которые не до конца знакомы с этим модулем веб сервера Apache, а также для тех, кто вообще первый раз об этом слышит – постараюсь рассказать в этой публикации (в нескольких частях) подробнее о данном модуле.
Модуль mod_rewrite является программным модулем веб сервера Apache (обратите внимание, что он не будет выполняться под другими веб серверами!). Его первичная функция - манипуляция действий с URL. Модуль очень универсален и разносторонен, поэтому я постараюсь показать здесь множество реальных примеров.
Mod_rewrite является замечательным модулем, который предоставляет «основанный на правилах механизм динамического изменения запрашиваемых URL-ов». Это действительно мощный инструмент, и поэтому, его знание принципиально важно, если вы хотите стать подлинным веб мастером или веб программистом. Не столько принципиально, будете ли вы использовать его в своей работе, сколько важно то, что вы знаете, что он может делать, и сможете поведать об этом своему боссу, когда появится желание сделать что-нибудь странное с веб сервером.
Однако нужно быть очень осторожным и даже дотошным при работе с этим модулем! Некоторые ошибки, которые Вы способны допустить, могут привести к логической петле, причиняя непрекращающуюся 100%-ую загрузку ценрального процессора (CPU).
Чтобы не казаться пространным в рассуждениях, приведу некоторые очень простые примеры.
Прежде, чем мы сможем приступить к работе, Вы должны будете проверить, установлен ли модуль на вашем веб сервере или нет.
Есть несколько способов проверить это:
1. Спросить вашего системного администратора - знает ли он (или она) о наличии этого модуля на веб сервере. Они действительно должны знать, но как показывает практика – попадаются и не очень сведующие сисадмины ...
2. Не напрягайте других: если Вы используете ваш веб сервер с сотнями других доменов, ваши действия могут разбудить некоторых спящих собак, поскольку использование mod_rewrite будет всегда влечь за собой некоторую увеличенную загрузку ценрального процессора.
3. Проверить ваш файл конфигурации Apache (httpd.conf), если Вы имеете к нему доступ. Один из возможных стандартных путей может быть: /etc/httpd/httpd.conf
Однако, ваш путь может очевидно отличаться от этого. Проверить работу вашего сервера с ниже приведенными примерами. Если сервер работает без ошибок – mod_rewrite действительно установлен на вашей системе. Если нет, Вы получите следующее сообщение при запросе любой web-страницы с вашего сервера: «Внутренняя ошибка сервера» Также, Вы увидите такую запись в файле «error.log»: «Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration».
Теперь давайте копнем поглубже и посмотрим первый практический примерчик.
Предположим, что Вы будете использовать mod_rewrite только для вашего собственного сайта, то есть не как обобщенную перекрестную установку сервера.
Для нашего примера потребуется использование файла .htaccess. Для работы этого метода, Вы должны загрузить файл под названием «.htaccess» (пожалуйста, обратите внимание на точку в начале имени файла!) в папку сервера, с которой Вы будете работать. Это можно сделать через telnet или ftp. (Предупреждение: .htaccess должен быть загружен в «режиме ASCII», то есть не в бинарном режиме!)
Если у Вас уже имеется файл «.htaccess», например со следующими записями:
то просто добавьте снизу наш образец кода к уже существующему (Важно: редактируйте ваш файл .htaccess в ASCII-редакторе типа Notepad).
Первые две записи запустят сам модуль:
Совет: запись «RewriteEngine off» отменит все последующие команды. Это - очень полезная особенность: вместо необходимости комментировать все последующие строки – все, что Вы должны сделать, это установить «off».
Если ваш системный администратор запрещает Вам использование «Options +FollowSymlinks», Вы не сможете ограничить использование mod_rewrite для отдельных каталогов, вместо этого изменения будут действовать на весь сервер.
Следующая необходимая запись - это:
«/» является корневым (основным) URL. Если у Вас какой-то другой URL, Вы можете указать это в данной директиве, однако «/» – обычно эквивалентно адресу «http://домен.ру».
А теперь, господа, перейдем к более интересным записям!
Предположим, что вы хотите защитить от несанкционированного доступа ваш файл .htaccess. На некоторых серверах Вы можете легко читать этот файл просто вводя URL следующего формата в поле адреса вашего браузера: http://www.domain.com/.htaccess – серьезное упущение защиты, так как содержание вашего .htaccess может показать важную информацию об установках и настройках вашего сайта человеку, знающему как эти знания применить против вас.
Чтобы блокировать этот доступ, запишем следующее:
Это правило переводится так:
Если кто-то пробует обращаться к файлу .htaccess, система должна произвести код ошибки «HTTP response of 403» или «403 Forbidden - You don't have permission to access /.htaccess on this server».
Конструкция ^.htaccess$ в этом регулярном выражении означает:
^ – якорь начала строки
$ – якорь конца строки
. – в регулярных выражениях точка «.» обозначает мета-символ и должна быть защищена обратным слэшем (backslash), если Вы все-таки хотите использовать именно фактическую точку.
Имя файла должно быть расположено точно между начальным и конечным якорем. Это будет гарантировать то, что только это определенное имя файла и никакое другое, сгенерирует код ошибки.
[F] – специальный «запрещающий» флажок (forbidden).
В этом примере, файл ".htaccess" теперь будет состоять из таких строк:
Если мы добавим наш код (в примерах) к существовавшему ранее файлу «.htaccess», то получим следующую конструкцию:
Это введение затрагивает лишь основы, требуемые для того, чтобы работать с модулем mod_rewrite. Во второй части этой обучающей серии статей постараюсь объяснить использование различных условий в конфигурировании модуля.
Ссылка по теме: URL Rewriting Engine
Автор статьи: Denveroid
Источник: sitemaker.ru