开发者

Use symfony 1.4 without changing apache configuration

Is it possible to set the /web directory as webroot without changing apache configuration file?

I tried using the following .htaccess code, but if i go to localhost/module/, it displays 404 error. But if i go to localhost/web/module/ then everything works.

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    sf/(.*) lib/vendor/symfony/data/web/开发者_开发知识库sf/$1 [L]
   RewriteRule    ^$ web/    [L]
   RewriteRule    (.*) web/$1 [L]
</IfModule>


i do like this on the root :

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

And edit web/.htaccess uncommented the 'RewriteBase /' line.

this make all the mysite.com/aaaa/bbbb works like mysite.com/web/aaaa/bbbb


Short answer: no.

Bit longer: you will have to edit the apache config at least to give it permission to access the web/ directory, so even if you symlink your web folder to /var/www, it will not work.


This is quiet similar to my question Symfony on virtual host (document root problem).

This is my .htaccess in the project root directory:

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]

This solved my problem but symfony tries to generate every url (eg. using url_for) from the document root so instead of url like domain.com/my-article it generates domain.com/web/my-article.
I had to slightly modify my PatternRouting class to trim the /web prefix from each url. I think this is not the best solution but it works.

Also if I want to access backend application I have to call always /web/backend.php/ because I don't want to have so many rewrite rules in the .htaccess.

If you want to see my extended PatternRouting class source code I'll paste it here.


Yes, it is possible. Copy everything from web/ up a level to your document root. Edit index.php to reflect the fact that everything it includes is now one level closer to its current directory than it used to be (one less ../). You won't have to edit a single other Symfony file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜