Вот моя структура каталогов:Установить корневой документ в подкаталог, перенаправлять индексировать .php
/.htaccess
/public/
/public/.htaccess
/public/index.php
/public/js/main.js
/public/somedir
/public/somedir/.htaccess
/public/somedir/index.html
/public/somedir/js/script.js
В принципе, мне нужно, чтобы она появилась, что каталог /public
является корневым документом, даже ВХост имеет то, что здесь /
как корень документа. Поэтому /public/*
НЕ должен отображаться в URL-адресе.
В принципе мне нужно /.htaccess
либо переписать существующий файл в /public/
(т.е. я прошу /js/main.js
и служит файл /public/js/main.js
) или запустить /public/index.php
, если не существует соответствующий файл.
мне нужно /public/somedir/.htaccess
служить файл, если он существует в /public/somedir
, а также удаление /public
из передней части URI, или служить /public/index.php
если УИР /somedir/api/*
подобран, или служить /public/somedir/index.html
, если ни одно из этих условий верно.
Вот источник /public/somedir/.htaccess
:
RewriteEngine on
Options +SymLinksIfOwnerMatch
RewriteCond %{REQUEST_URI} ^/somedir/api
RewriteRule^../index.php [L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule^- [L]
RewriteRule^index.html [L]
Вот источник /public/.htaccess
:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /index.php
А вот источник /.htaccess
:
RewriteEngine On
RewriteRule ^(.*)$ /public/$1
И вот поведение где => означает «запрос» => «подавать s ":
/
=>/public/index.php
ХОРОШО
/nofile
=>/public/index.php
ХОРОШО
/js/main.js
=>/public/js/main.js
ХОРОШО
/somedir/js/script.js
=>/public/somedir/js/script.js
ХОРОШО
/somedir
=>/public/somedir/index.html
НО перенаправляет /public/somedir/
BAD
/somedir/api/test
=>/public/somedir/index.html
НО должен служить /public/index.php
BAD
Любое понимание очень ценится.