2010-05-22 11 views
0

Est-il possible de définir le répertoire /web comme une racine Web sans modifier le fichier de configuration apache?Utiliser symfony 1.4 sans modifier la configuration d'apache

J'ai essayé d'utiliser le code .htaccess suivant, mais si je vais à localhost/module/, il affiche l'erreur 404. Mais si je vais à localhost/web/module/ alors tout fonctionne.

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule sf/(.*) lib/vendor/symfony/data/web/sf/$1 [L] 
    RewriteRule ^$ web/ [L] 
    RewriteRule (.*) web/$1 [L] 
</IfModule> 

Répondre

0

Courte réponse: non. Bit plus long: vous devrez éditer la configuration apache au moins pour lui donner l'autorisation d'accéder au répertoire web /, donc même si vous créez un lien symbolique avec votre dossier web vers/var/www, cela ne fonctionnera pas.

+0

Mon chemin d'accès au répertoire Web est/home/xx/public_html/web – Ragnis

+1

Alors pourquoi ne pas faire/home/xx/public_html votre site Web? Mettez votre code dans/home/xx, et éditez votre ProjectConfiguration pour appeler '$ this-> setWebDir'? Si cela fonctionne, je mettrai à jour ma réponse. – Maerlyn

+0

J'ai mis tous mes fichiers symfony dans/home/xx/private_html/et à gauche seulement/contenu du dossier web dans/home/xx/public_html/ Mais maintenant je ne peux pas le faire fonctionner. Symfony recherche toujours ses fichiers depuis/home/xx/public_html/folder. – Ragnis

0

Ceci est silencieux similaire à ma question Symfony on virtual host (document root problem).

Ceci est mon .htaccess dans le répertoire racine du projet:

RewriteEngine On 
RewriteBase/  

RewriteCond %{REQUEST_URI} ^/images/ [OR] 
RewriteCond %{REQUEST_URI} ^/js/  [OR] 
RewriteCond %{REQUEST_URI} ^/css/ 
RewriteRule ^(.*)$ /web/$1 [L] 

RewriteCond %{REQUEST_URI} !^/web/ 
RewriteRule ^(.*)$ /web/index.php [QSA,L] 

Ceci a résolu mon problème, mais symfony tente de générer toutes les URL (. Par exemple en utilisant url_for) à partir de la racine du document donc au lieu d'URL comme domain.com/my-article il génère domain.com/web/my-article.
J'ai dû modifier légèrement ma classe PatternRouting pour découper le préfixe /web de chaque URL. Je pense que ce n'est pas la meilleure solution mais cela fonctionne.

Aussi si je veux accéder à l'application backend je dois toujours appeler /web/backend.php/ parce que je ne veux pas avoir autant de règles de réécriture dans le .htaccess.

Si vous voulez voir mon code source de classe étendu PatternRouting je vais le coller ici.

1

Je aime ceci sur la racine:

RewriteEngine On 
RewriteBase/
RewriteRule (.*) ./web/$1 [L] 

et modifier web/.htaccess décommentée la ligne 'RewriteBase /'.

ce faire tous les mysite.com/aaaa/bbbb fonctionne comme mysite.com/web/aaaa/bbbb

0

Oui, il est possible. Copiez tout d'un niveau Web à un niveau supérieur à la racine de votre document. Editez index.php pour refléter le fait que tout ce qu'il contient est maintenant à un niveau plus proche de son répertoire actuel qu'il ne l'était (un de moins ../). Vous n'aurez pas à modifier un seul autre fichier Symfony.