Autor | Zpráva | ||
---|---|---|---|
ondra256 Profil |
#1 · Zasláno: 23. 3. 2022, 09:10:30
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 |
#3 · Zasláno: 23. 3. 2022, 10:55:04
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 |
#4 · Zasláno: 23. 3. 2022, 11:53:22
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 |
#5 · Zasláno: 23. 3. 2022, 15:21:43
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. |
||
Časová prodleva: 2 roky
|
0