Как следует из названия .htaccess
, он может управлять доступом к каталогу. Файлы .htaccess
считываются при каждом запросе. Я предполагаю, что это означает, что каждый HTTP-запрос к доменному имени должен проходить через файл .htaccess
. Так что похоже, что файл .htaccess
похож на файл gatekeeper
. Из Википедии кажется, что файл .htaccess
можно использовать для блокировки загрузки веб-страницы с определенного IP-адреса.
Первая строка файла .htaccess
: RewriteEngine On
Эта строка кода: RewriteEngine
— это директива Apache, которая включает или выключает Apache Rewriting Engine
.
Так что файл .htaccess
просматривает каждый запрос, принимает запрос, а затем отправляет другой запрос.
Кажется, что файл app.yaml
не может напрямую принимать один запрос URL и выталкивать другой запрос, НО файл app.yaml
может принимать запрос URL, а затем запускать PHP-скрипт, который изменит запрос.
Итак, в файле app.yaml
раздел, который принимает URL-адрес, а затем перенаправляет на скрипт, будет выглядеть так:
Перехватите входящие запросы URL и запустите файл mod_rewrite.php
.
- url: /Put the incoming URL you want to monitor, catch and redirect here
script: mod_rewrite.php
Перенаправлять URL-запросы с помощью app.yaml
Вторая строка файла .htaccess
:
RewriteCond %{REQUEST_FILENAME} !-f
Это тест, ищущий совпадения во входящем запросе URL. -f
в конце означает:
-f (обычный файл) Рассматривает TestString как путь и проверяет, существует ли он или нет, и является ли он обычным файлом.
О, подождите! Перед ним стоит восклицательный знак. Это, наверное, тест на логическое нет. Итак, если это НЕ обычный файл?
Что бы это ни значило. Чем отличается обычный файл от всего остального? Что такое нестандартный файл? лол, идк. В любом случае, он ищет файл, я думаю.
Вот цитата из документации Apache:
Серверные переменные: это переменные вида %{ NAME_OF_VARIABLE }, где NAME_OF_VARIABLE может быть строкой, взятой из следующего списка:
Так что часть %{REQUEST_FILENAME}
второй строки — это то, что Apache называет Server-Variable
, а конкретное Server-Variable
— это REQUEST_FILENAME
.
Вот цитата из документации Apache:
REQUEST_FILENAME Полный путь локальной файловой системы к файлу или сценарию, соответствующему запросу, если он уже был определен сервером во время обращения к REQUEST_FILENAME. В противном случае, например, при использовании в контексте виртуального хоста, то же значение, что и REQUEST_URI. В зависимости от значения AcceptPathInfo сервер мог использовать только некоторые ведущие компоненты REQUEST_URI для сопоставления запроса с файлом.
Итак, я предполагаю, что файл .htaccess
ищет что-то похожее на путь к файлам на вашем локальном компьютере?
Наконец, есть Rewrite Rule
правило перезаписи Apache.
Для чего QSA
в конце? Я предполагаю, что это называется флагом, и:
Использование флага [QSA] приводит к объединению строк запроса
QSA, кажется, означает Query String Append
. Если в конце входящего URL-адреса есть строка запроса, как вы хотите ее обработать?
[L] предотвращает добавление любых дальнейших правил перезаписи.
Флаг перезаписи Appache L QSA документации Appache
Символ (^) называется кареткой. Я не знаю, почему это используется в начале. Синтаксис директивы Appache Rewrite:
RewriteRule pattern target [Flag1,Flag2,Flag3]
Таким образом, курсор является частью обнаруживаемого шаблона. Эта цель просто index.php
. Таким образом, похоже, что множество различных возможных запросов просто направляются обратно в файл index.php
, который является самым первым, что запускает приложение.
Звездочка в конце, вероятно, является подстановочным знаком для любого расширения.
person
Alan Wells
schedule
25.01.2014