Autor Zpráva
ondra256
Profil
Zdarvím,

Mám projekt Symfony, React na Windowsu. Používám Wamp64 a projekt routuju pomocí VirtualHostu.

Virtual host
<VirtualHost *:80>
    ServerName my-project.test
    DocumentRoot "c:/wamp64/www/my-project/fe/build"

       # api dotazy směřuju do symfonz složky kde je index.php
        Alias /api c:/wamp64/www/my-project/public

        # Tady směřuju provoz do složky kde je frontend
    <Directory  "c:/wamp64/www/my-project/fe/build/">
        Options Indexes FollowSymLinks
        AllowOverride All
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ index.html [QSA,L]
        Require all granted
    </Directory>
</VirtualHost>

V symfony složce public/ mám vytvořený htaccess soubor s timto:
RewriteEngine On
RewriteBase /api/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]


Konfigurace takhle funguje, ale problém je, že se do symfony propíše adresa bez /api tím pádem symfony nenajde žádnou routu. Zkoušel jsem variantu RewriteBase / ale to bohužel vyhodí bílou Apache stránku Not Found.

Nevíte někde v čem by mohl být yakopaný pes?

Předem děkuju
Keeehi
Profil
V konfiguraci apache nejsem velký odborník ale říkám si, že tohle by mohlo fungovat. Když ti tam api chybí, tak ho tam prostě natvrdo dopsat.
RewriteRule ^(.*)$ index.php?/api/$1 [L,QSA]
ondra256
Profil
Keeehi:
Tohle jsem zkoušel, ale zacyklilo se mně to na redirectech. Pořád to přidávalo /api

Ale nápad dobrý :-)
Kajman
Profil
Když se do api nedá .htaccess a před výchozí pravidlo celého webu se přidá ještě jedno, ta se něco změní?

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(api/.*)$ api/index.php?/$1 [L,QSA,PT]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
ondra256
Profil
Kajman:
To už vypadá lépe. Api (s malou úpravou) funguje. Ale teď nefunguje Frontend který je ve složce fe/build/index.html

RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(api/.*)$ public/index.php?/$1 [L,QSA,PT]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ fe/build/index.html [QSA,L] # TAKHLE SE TO NASMĚŘUJE DO SPRÁVNÉ SLOŽKY, ALE POKUD SE STAHUJÍ ASSETY

Takže teďkom mám v konzoli chybu:

static/js/main.97d34693.js NOT FOUND. Zřejmě se snaží soubor najít v root složce projektu a né ve složce fe/build/static/js/


Potřeboval bych nějak nastavit aby to soubory stahovalo z té složky fe/build. Snažím se o to ale nedaří se :-(
Kajman
Profil
Takže jste změnil DocumentRoot? Pak by asi šlo ještě přidat pravidlo, že i existující soubory hledá ve složce fe/build


RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(api/.*)$ public/index.php?/$1 [L,QSA]

#test, ze jeste nedoslo k podstrceni, aby se to necyklilo
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^(.*)$ fe/build/$1 [L]
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ fe/build/index.html [L]

Ale jestli jsou statické soubory i v adresáři public a mají být dostupné cestou začínající na api, tak to bude potřeba asi ošetřit i to.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0