Части правила перезаписи разбиваются следующим образом:
RewriteRuleУказывает, что эта строка будет правилом перезаписи, в отличие от условия перезаписи или одной из других директив механизма перезаписи
^ (. *) $Соответствует всем символам (.*)
от начала ^
до конца $
запроса
/ index.php / $ 1Запрос будет переписан с использованием данных, сопоставленных (.*)
в предыдущем примере, вместо $1
.
[L]Это говорит mod_rewrite, что если шаблон на шаге 2 совпадает, примените это правило как правило «Последнее» и больше не применяйте.
Документация mod_rewrite является действительно всеобъемлющим, но, по общему признанию, многое нужно сделать, чтобы декодировать такой простой пример.
Чистый эффект состоит в том, что все запросы будут маршрутизироваться через index.php
, что наблюдается во многих реализациях модель-представление-контроллердля PHP.index.php
может исследовать запрошенные сегменты URL (и, возможно, был ли запрос сделан с помощью GET или POST) и использовать эту информацию для динамического вызова определенного сценария, причем местоположение этого сценария не должно соответствовать структуре каталогов, подразумеваемой URI запроса.
Например, /users/john/files/index
может вызвать функцию index('john')
в файле с именем user_files.php
, хранящемся в каталоге скриптов.Без mod_rewrite более традиционный URL, вероятно, использовал бы, возможно, менее читаемую строку запроса и вызывал файл напрямую: /user_files.php?action=index&user=john
.