.htaccess + advanced app + rest-api


(Asmolak) #1

witam

mam problem z htaccess

chcę skonfigurować aplikacje tak by :

wchodząc pod adres http://localhost - pojawiała się storna frontend

wchodząc pod adres http://localhost/backend - pojawiała się storna backend

wchodząc pod adres http://localhost/api - pojawiała się storna api

VirualHosta w apache skonfigurowałem tak by kierował do głównego katalogu aplikacji

i tam umieściłem taki .htaccess





RewriteEngine On


# End the processing, if a rewrite already occurred

RewriteRule ^(frontend|backend|api)/web/ - [L]


# Handle the case of backend, skip ([S=1]) the following rule, if current matched

RewriteRule ^backend(/(.*))?$ backend/web/$2 [S=1]

RewriteRule ^api(/(.*))?$ api/web/$2 [S=1]


# handle the case of frontend

RewriteRule .* frontend/web/$0


# Uncomment the following, if you want speaking URL

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^/]+/web)/.*$ $1/index.php




niestety w takim przypadku strona backend nie działa

jesli zablokuje


#RewriteRule ^api(/(.*))?$ api/web/$2 [S=1]

backend zacznie działać

jak w takim razie powinna wyglądać reguła dla api ?


#2

Jeśli masz dostęp do konfiguracji vhosta, to wyważasz otwarte drzwi. Utwórz sobie aliasy w konfiguracji apache, tak aby kierowały do odpowiednich webrootów, np.


Alias "/backend" "/home/user/app/backend/web"

Nawet jeśli nie możesz tego zrobić, prościej i bezpieczniej jest utworzyć dowiązania symboliczne, niż walczyć z mod_rewrite.


(Asmolak) #3

na docelowym hostingu nie mam takiej możliwości


#4

No to symlinki. Tworzysz sobie dowiązanie ‘backend/web’ -> ‘frontend/web/backend’ i analogiczne dla API. Wszystko powinno działać bez żadnych dzikich kombinacji z mod_rewrite.