Помогни ни да направим Uroci.net по - богат! Добави урок

.htaccess файлове - същност и възможности

SEO » SEO
cloxy   трудност:    видян: 1955

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

Основните неща, които трябва да се знаят за htaccess файловете са следните:

       - По подразбиране тези файлове са с име .htaccess, но разбира се това може да бъде променено.

       - Представляват обикновени текстови файлове, като за Windows потребителите може да е объркващо, че тези файлове нямат име, а само разширение .htaccess . Ето защо Windows не позволява създаването на такива файлове, но не забранява ползването им т.е можете да създадете тези файлове на обикновен Linux сървър и да си ги копирате на Windows машина ако желаете да ги използвате там.

       - Като текстови файлове, те съдържат набор от текст със специален синтаксис, в който се описват директиви, конфигурации, правила и др. ,с които се извършва конфигурацията на директорията

       - .htaccess файловете се поставят в съответната директория, за която съдържат конфигурационни директиви

       - Директивите описани в тези файлове важат за всички поддиректории на директорията, в която се намира .htaccess файла.

       - Поддиректориите могат да съдържат други .htaccess файлове, с други директиви, като се пренебрегват директивите описани в .htaccess файла на родителската директория.


.htaccess файловете се използват най-често, когато няма директен досъп до конфигурационния файл на Apache сървъра – тези файлове се поддръжат само от Apache сървъри. Обикновено влизат в употреба най-често за следните насоки:

Пренаписване на URL адрес

-    пренаписване на URL адреса – това е възможност на Apache сървъра да пренаписва URL адреса, като по този начин конвертира сложния и дълъг адрес в удобен и лесен за запомняне адрес, особено полезно за оптимизация спрямо търсачките в интернет. Пренаписването става на базата на регулярни изрази и определени алгоритми, които ще бъдат описани по-надолу в статията. Използва се най-често с цел SEO оптимизация.

Защита на директория с потребителско име и  парола:

-    Създаване на ограничен контрол на достъпа до файловете в директорията – това е възможност, при която може да се ограничи достъпа до сървъра чрез парол и потребителко име на ниво директория.


Пример:

AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
Require user myuser pass

Забрана на достъпа до опрeделени типове файлове – това е практика, при която може да се защити определен файл от директен достъп

Примерна реализация за забрана на директен достъп до файл:

Пример:

<Files ~ "(.(inc|pl|sh|sql|theme|engine|xtmpl)|updates)$">
    Order deny,allow
    Deny from all
</Files>



Където <Files> - е конфигурационната директива  директива на htaccess файла

Чрез тези директиви се забранява достъпа до файлове с раширение .inc, .pl, .sh, .sql, .theme, .engine , .xtml и т.н

Указване на файл, който да се извика в случай на грешка

Пример

ErrorDocument 404 /index.php

Горния пример ще укаже да се извика файл index.php, когато съръвъра не може да открие заявения файл. Това е удобен начин за контрол на грешките над сървъра и е показател за качеството на приложението.

Контрол на сървърния език – PHP - htaccess файловете дават възможност за контрол на конфигурацията на сървърния език. Това е особено полезно, когато сме на разпределен сървърен ресурс и нямаме директен достъп до конфигурационния файл на езика


Пример:

<IfModule mod_php4.c>
    php_value magic_quotes_gpc   0
    php_value register_globals   0
    php_value session.auto_start 0
</IfModule>

<IfModule sapi_apache2.c>
    php_value magic_quotes_gpc   0
    php_value register_globals   0
    php_value session.auto_start 0
</IfModule>


    Статията ще бъде допълнена с още примери за употреба на htaccess файловете, но сега нека разгледаме по-подробно възможността за пренаписване на URL адреса.

Това е една от най-мощните функционалности на Apache сървъра и по-специално на един модул към него наречен – mod_rewrite

Mod_rewrite използва двигател базиран на правила зададени от потребителя и по-специално набор от регулярни изрази за контрол нa URL. Манупулациите върху адреса зависят от набор от определени тестове на състояния и сървърни променливи. Модула има огромен брой възможности, разбира се в компенсация на тези големи възможности идва сложността на модула.

Основното, което трябва да се разбере е същността на обработата на HTTP заявките от сървъра.

Обрабортката се извършва на фази. Сървъра е снабден с т.нар „куки”(hooks) за прихващане на всяка фаза. Mod_rewrite модула използва 2 от тези куки:

-    кука за транслация на URL към име на файл – тази кука се вика веднага след приемане на HTTP заявката, но преди да е извъшена ауторизация.

-    Фиксираща кука, която се вика веднага след ауторизация и след прочитането на htaccess файла, но преди да се активира обработващия механизъм за съдържание
След инициализирането на mod_rewrite модула в тези две фази следва обработка на групи от правила зададени в конфигурационните файлове.


Основни и най-често използвани конфигурационни директиви на .htaccess файловете

RewriteEngine

Това е директива, която пуска или изключва пренаписващия модул в реално време. Синтаксиса и е следния:

RewriteEngine on – пренаписването е включено
RewriteEngine off – пренаписването в изключено

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

RewriteBase

Това е директива указаща базовия URL път  за директорията текущата директория. Синтаксиса е следния:

RewriteBase /mysite

Горната директива ще укаже, че базовият URL адрес е адреса на сървъра + /mysite .

RewriteCond

Това е директива, която указва при какво условие може да се извика пренаписащ процес.
Синтаксиса е следния:

RewriteCond <тестов низ>  <условие>

където <тестов низ> може да бъде произволен желан низ или някоя от следните сървърни променливи:

HTTP хедъри:

HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT

Идентификатори на връзката:

REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE

Вътрешни сървърни променливи:

DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE

Системни променливи:

TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME

Специални променливи:

API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ

<условие> може да бъде някой от следните ключове:

-d   - третира <тестовия низ> като директория и проверява дали съществува и дали е валидна директория
-f    -  третира <тестовия низ> като файл и проверява дали съществува и дали е валиден файл.
-s   - проверява дали големината на файла е валидна
-l     - третира текстовия низ като линк и проверява дали съществува
-U   - третира тестовия стринг като URL и проверява дали съществува

Всеки от тези ключове може да работи и с отрицание като се използва символа "!" пред всеки ключ.

пример за употребата на тази директива:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

След прочитане на горните правила mod_rewrite ще пренапише всичко, което е непосредствено след домейна, не е файл или директория, на следното URL index.php?q="всичко след домейна"





Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: IT Новини