Перенаправления Frontend и Backend .htaccess с одним Base-URIApache

Ответить
Anonymous
 Перенаправления Frontend и Backend .htaccess с одним Base-URI

Сообщение Anonymous »

Я пробовал так много всего, но пока не получилось:
У меня есть веб-пространство, где я могу работать с файлами .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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»