Недавно меня попросили написать цикл статей о mod_rewrite . Я решил, что эта тема будет интересна многим, поэтому с этой статьи будет несколько штук по этой теме. Mod_rewrite - это модуль Apache (на других серверах его нет), который позволяет управлять URL-адресами . И начнём мы с запрета доступа к определённым файл...

Запрет доступа к файлам через mod_rewrite

Недавно меня попросили написать цикл статей о mod_rewrite. Я решил, что эта тема будет интересна многим, поэтому с этой статьи будет несколько штук по этой теме. Mod_rewrite - это модуль Apache (на других серверах его нет), который позволяет управлять URL-адресами. И начнём мы с запрета доступа к определённым файлам через mod_rewrite.

Допустим, у нас есть файл на сервере, пусть он называется secret.php. И мы хотим, чтобы пользователь из браузера не смог к нему получить доступ. Чтобы введя "http://mysite.ru/secret.php", ему вывелось "Forbidden", то есть 403-я ошибка.

Для этого напишем в файле .htaccess следующий код:

RewriteEngine on
RewriteRule ^secret.php$ - [F]

В первой строчке мы включаем модуль mod_rewrite. Вторая строчка сложнее:

  • RewriteRule - основной механизм mod_rewrite, отвечающий как раз за различные преобразования.
  • ^secret.php$ - регулярное выражение. Если запрашиваемый файл будет отвечать этому регулярному выражению, то тогда будет срабатывать якорь [F], о котором написано ниже. Что касается регулярного выражения, то тут всё просто: ^ - начало строки, $ - конец строки, secret.php - само название файла. ^ и $ написаны для того, чтобы RewriteRule не срабатывал на, например, такие файлы: "nosecret.php" или "secret.php.html".
  • [F] - означает, что необходимо вызвать ошибку Forbidden.

Вот таким образом делается запрет доступа к файлам через mod_rewrite. В последующих статьях мы продолжим изучение модуля mod_rewrite.