Я пробовал так много всего, но пока не получилось:
У меня есть веб-пространство, где я могу работать с файлами .htaccess. У меня есть интерфейс Angular и серверная часть PHP, написанные с использованием фреймворка Symfony.
Папки:
/[frontend]
/api/[backend]
/api/public/
Файлы:
/.htaccess(1)
/index.html (точка входа Angular)
/api/.htaccess(2)
/api/public.htaccess(3)
/api/public.index.php(точка входа Symfony)
Я не могу решить, где мне следует разместить файлы .htaccess, чтобы все это работало.
Список URL-адресов с примерами, где они должны быть точка:
myweb.com/ -> отобразить index.html (работает)
myweb.com/about -> перенаправление на index.html, и angular будет обрабатывать дополнительный путь (работает)
myweb.com/api -> перенаправление на /api/public/index.php (не работает, ошибка 403)
myweb.com/api/brand/new -> перенаправить на /api/public/index.php, и symfony будет обрабатывать подпути после /api/ (полуработает, ничего не находит по этому API, но обрабатывается index.php)
myweb.com/api/public/brand/new -> это работает, но я не хочу, чтобы в URL-адресе была общедоступная информация.
Я не хочу, чтобы /public/ появлялся в URL-адресе.
Есть такое созвездие вообще возможно?
У меня Angular работает с этим в .htaccess (1)
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/api/ [NC]
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ /index.html [L]
Symfony предоставляет этот файл «.htaccess (3)». Это отлично работает, если у Symfony есть собственный URL-адрес и он расположен в корневом каталоге, а у меня есть файл .htaccess(2) в корневом каталоге.
.htaccess (3)
Options -MultiViews
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
RewriteRule .* - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .+
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ %{ENV:BASE}/index.php [L]
RedirectMatch 307 ^/$ /index.php/
.htaccess (2)
RewriteEngine On
RewriteBase /api/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(.*)$ /api/public/index.php [L]
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-base-uri