Я устанавливаю phpancake, существует папка там схема как это
application/
install/
library/
public/
sql_schema/
install.html
install.php
Чем это управляет средний?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /vote/public/index.php [NC,L]
Перезапись состоит из двух частей. Первый указывает, что если запрошенным именем файла является обычный файл размером больше 0 ( -s
), символьная ссылка ( -l
) или каталог ( -d
), перезаписать в никуда, например. не предпринимать никаких действий. [NC, L]
означает, что правило не чувствительно к регистру и последнее правило, которое соответствует этим условиям.
Все остальные запросы направляются по адресу /vote/public/index.php
.
Цель этой перезаписи состоит в том, что фактический существующий файл может быть извлечен с сервера без вмешательства. Без первого правила, каждый запрос файла (css и js файлы, изображения и т.д.) будет идти в index.php
, который испортит вещи довольно плохо.
Обычно это записывается в одном объявлении. Можно отменить условия, после чего можно также удалить операторы [OR]
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /vote/public/index.php [NC,L]
Это эквивалентно исходному оператору.
В основном это стандартные перезаписи, которые проверяют, существует ли запрашиваемый файл (или каталог, или символическая ссылка) на диске, и в этом случае следует использовать файл/каталог/и т.д..
Все остальные совпадения должны идти в /votes/public/index.php
.Первое правило будет проходить через все запросы, которые могут быть привязаны к обычному файлу размером больше нуля (-s
), символической ссылке (-l
) или каталогу (-d
). Каждый второй запрос извлекается в соответствии со вторым правилом и переписывается на /vote/public/index.php.