Как бы мне разобраться с htaccess?

Всем доброго времени суток.
Сейчас изучаю серию уроков по созданию движка сайта на php (точнее уже изучил). Суть движка такова: есть файл index.php и по сути через него работают все остальные *.php. В уроках не был разъяснен htaccess. Просто было сказано добавьте на в корень папки с сайтом данный файл с таким кодом и все:

  1. RewriteEngine on
  2. RewriteBase /
  3. Options All -Indexes
  4. RewriteCond %{REQUEST_FILENAME} -s [OR]
  5. RewriteCond %{REQUEST_FILENAME} -l [OR]
  6. RewriteCond %{REQUEST_FILENAME} -d
  7. RewriteRule ^resource/(.*)$ resource/$1 [L]
  8. RewriteRule ^catalog/(.*)$ catalog/$1 [L]
  9. RewriteRule ^.*$ [NC,L]
  10. RewriteRule ^.*$ index.php [NC,L]
  11. AddDefaultCharset UTF-8
  12. AddType 'text/html; charset=utf-8' .html .htm .shtml


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

2. Вторая строчка указывает директорию, где будут происходить преобразования.

3. Если нет index.php то каталог на сервере не будет отображаться.

4-6. Условия при которых будет срабатывать правило 7. (Т.е. если полный путь к файлу или сам файл: а) является обычным файлом с ненулевым размером; б) является символической ссылкой; в) является каталогом).
Внимание, вопрос: Когда будет срабатывать правило 7: при выполнении всех трех условий или хотя бы одного. Данный вопрос возник в связи с тем что:
Используйте для комбинирования условий в правилах OR вместо AND.


7. Заменяем resource/{любые символы} на resource/$1 и [L] - заканчиваем преобразования и больше ни чего не преобразовываем.
Внимание, вопрос: Что означает $1

8. Тоже самое что и предыдущее правило только параметры другие, но..
Внимание, вопрос: Почему тут нет никаких условий. Ну и опять $1.

9. Сразу..
Внимание, вопрос: Что вообще тут происходит? Т.е. мы преобразовываем абсолютно любой URL в.... Ничто?! Второго параметра то нет.

10. Тут, мне кажется, правило означает, перенаправление любого запроса на index.php.
Внимание, вопрос: Верно?

11-12. Тут понятно все.

Внимание, главный вопрос: Почему условие есть только у одного правила, и почему это работает?
  • Вопрос задан
  • 3558 просмотров
Решения вопроса 1
trevoga_su
@trevoga_su
Советую отказаться от такого подхода, когда ты в файле конфигурации сервера htaccess пишешь условия для сайта.
Это уже устаревшая практика и даже с идеологической точки зрения не верная, когда на файл конфигурации сервера возложена функция маршрутизации web-приложения.

Читай - www.phpinfo.su/articles/practice/chpu_na_php.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы