PHP в деталях


         

если какой либо элемент, название


# если какой либо элемент, название директории или имя файла, начинается с точки [.]

# то это считается служебным ресурсом и доступ к нему с клиентской стороны НЕвозможен

# кстати "так думают" ещё ls НЕ показывая по умолчанию такие файлы и samba, которая

# добавляет к таким файлам атрибут hidden

RewriteRule ^(.*/)\.(.*) %{REQUEST_FILENAME} [G]

# физические файлы и директории (в случае наличия DefaultIndex)

# имеют абсолютный приоритет

# если то, что просят, это физический файл,

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f # то отдаем как есть и останавливаемся

RewriteRule ^ %{REQUEST_FILENAME} [L]

# это не файл - пытаемся думать, что это директория

# если не было слеша в конце, то делаем редирект

# прилепляя слеш в конец запроса - т.о. пользователь увидит "красивый" адрес

# фактически это может произойти только один раз - если запрос не файл,

# и в конце нет слеша (то, что после ? и сам ? НЕ учитывается!)

# кстати - [R,L] можно убрать,

#RewriteRule [^\/]$ %{REQUEST_FILENAME}/

# и тогда итоговый URL для пользователя будет больше походить на путь к

# виртуальному файлу, чем к виртуальной директории :) и это можно красиво использовать!

RewriteRule [^\/]$ %{REQUEST_FILENAME}/ [R,L]

# если то, что просят, это физическая директория,

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d # и в ней есть DefaultIndex файл

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}index.html -f # то передаём на исполнение этот файл

RewriteRule ^ %{REQUEST_FILENAME}index.html [L]

# если то, что просят, это физическая директория,

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d # НО в ней НЕТ DefaultIndex файл

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}index.html !-f # то передаём на исполнение сообщение об отказе в доступе

RewriteRule ^ %{REQUEST_FILENAME} [F]

# и, если запрос содержит более одной директории,

# то, зацикливаем анализ, откинув последнюю директорию

#RewriteRule (/.*/)(.*/)$ $1 [N]

# ОБРАТИТЕ ВНИМАНИЕ! Данная конструкция может добавить ненужную нагрузку на сервер,


Содержание  Назад  Вперед