ugrás a tartalomhoz

Symfony - több project egy szerveren

inf3rno · 2010. Ápr. 24. (Szo), 19.38
Üdv.

Symfony telepítésével szenvedek már több napja. Van egy szerver, amin csak htaccess-hez férek hozzá, meg csak a wwwroot-hoz, semmi többhöz, és oda szeretnék feltenni több symfony projectet.

A mappaszerkezetem ilyen:
wwwroot/
 .htaccess
 main/
  ...
 teabolt/
  apps/
  web/
   .htaccess
  ...
 symfony/
  ...


Egyelőre csak a teabolt project van benne.


A htaccess fájljaim így néznek ki:

wwwroot/.htaccess:

RewriteEngine On

# avoid internal loop of rule ^(.*)$
RewriteCond		%{ENV:REDIRECT_STATUS}			200
RewriteRule		.*				-				[L]

# redirect project into its web folder, and skip the default page rule
RewriteRule		^teabolt/(.*)$	teabolt/web/$1	[QSA,L,S=1]

# redirect the default page into the main folder
RewriteRule		^(.*)$			main/$1			[QSA,L]

wwwroot/teabolt/web/.htaccess:

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  # RewriteBase /

  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Ez az alap, amit a projecthez generált a symfony.


A problémám a következő. Sikerült feltenni a Symfonyt, minden frankón működik, csak az url-el nem stimmel valami:

http://domain.loc/teabolt/-re a symfony 404-es hibaoldala jelenik meg, és helyette a
http://domain.loc/teabolt/web/ -en lehet elérni a projectet.
Tud valaki megoldást a problémára?
 
1

A hiba forrása

inf3rno · 2010. Ápr. 25. (V), 12.34
A Symfony a $_SERVER['REQUEST_URI']-ből veszi a routing-hoz a dolgait, viszont a htaccess ezt nem írja felül átirányításkor...

Ha beteszem a wwwroot/teabolt/web/index.php elejére, hogy

$_SERVER['REQUEST_URI'].='web/';
Akkor részben megoldódik a probléma. A statikus fájlokat még így is a web-es címen linkeli ki, és éri el a rendszer, de legalább a php-t már normálisan szolgálja ki.

Valószínűleg a link gyártó részén kéne még tákolni a symfonynak ahhoz, hogy rendesen menjen a dolog. Egyelőre még nem néztem meg, hogy hogyan csinálja a linkeket, remélem ahhoz is hozzá lehet férni valahogy...
2

Megoldás

inf3rno · 2010. Ápr. 25. (V), 15.28
Akkor a végső megoldás(teabolt nevű projektre):

wwwroot/.htaccess:

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteRule ^teabolt/(.*)$ teabolt/web/$1 [QSA,L,S=1]
RewriteRule ^(.*)$ main/$1 [QSA,L]
wwwroot/teabolt/web/.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
wwwroot/teabolt/web/index.php:

$_SERVER['REQUEST_URI'].='web/';
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
$context=sfContext::createInstance($configuration);
$context->getRequest()->setRelativeUrlRoot('/teabolt');
$context->dispatch();
Remélem a továbbiakban nem lesz ennyire gáz a Symfony használata, mert ezt úgy 5 nap alatt sikerült összehalásznom intenzív kereséssel.
3

azt azert tegyuk hozza, hogy

Sulik Szabolcs · 2010. Ápr. 26. (H), 15.45
azt azert tegyuk hozza, hogy egy webroot ala betenni tobb (akar csak egy) teljes projektet nem biztos, hogy egeszseges. ehhez kepest, ha megnezed a megoldasod, akkor kb 10 sor az egesz.

szvsz kevesen hasznaljak igy a symfony-t, nem csodalkozom, hogy nehezen talaltal ehhez infot.

most viszont a tobbiek mar konnyebben ossze tudjak hozni. kosz a leirast.
4

Nincs mit

inf3rno · 2010. Ápr. 27. (K), 02.09
és igazad van, tényleg nem egy szokványos dolog, csak hát sajnos igazodnom kell a lehetőségekhez. Nem én intéztem a szervert, és szívességből csinálok az oldalhoz egy webshopot. Normál esetben nyilván én sem így állnék neki...