Sanal konak üzerinde Symfony (belge kök sorun)

3 Cevap php

Ben Symfony'de bir uygulama geliştiriyorum ve localhost (XAMPP) ben webserver olarak aynı koşulları simüle etmek istiyorum.

Aşağıdaki gibi web sunucusu yapılandırılır:

/www   => mydomain.com
/foo   => foo.mydomain.com
/bar   => bar.mydomain.com
...

Ben orada olacağım bu yüzden /www direcotry içine benim Symfony uygulamaya koymak için gidiyorum:

/www
/www/apps
/www/apps/frontend
/www/apps/frontend/...
/www/apps/backend
/www/apps/backend/...
/www/cache
/www/config
... and so on...
/www/web

The thing is that the document root is still set to the /www directory but Symfony expects it in the /www/web.
Of course it will work if I call http://mydomain.com/web but I guess you understand this is quiet stupid solution.

So my question is:. Nasıl htaccess falan kullanan / bypass varsayılan belge kök ayarını değiştirebilirsiniz herhangi bir yolu var mı?

EDIT: I solved it.

3 Cevap

Ben Symfony hakkında çok şey bilmiyorum ama /web belge kök olması gerekiyordu. Diğer tüm dizinleri biri için güvenlik nedeniyle belge kök dışında olmalı ve başka URL /web kısmını önlemek için. Eğer zaten biliyorsun Ama görünüyor.

Eğer web sunucunun yapılandırmasını düzenlemek durumunda, web dizini olduğunu ve set DocumentRoot yansıtmaya çalışın.

Bunu yapamıyorsanız: Bu DocumentRoot bir .htaccess dosyasındaki değiştirmek mümkün değil ama onlar /web gitmek böylece tüm isteklerini yeniden yazmak mümkündür dahili kullanarak mod_rewrite. Bu kludgy, ama muhtemelen en iyi çözüm etkileyemez eğer DocumentRoot.

Ben bu yüzden (şu an Önce bunu test etmek zorunda kalacak ve ben yapamam) bir örnek sağlayamaz bir mod_rewrite gurusu değilim ama birisi olacaktır eminim. Belki sorunuzun mod_rewrite etiketi ekleyebilirsiniz.

Update: denenmemiş ama should çalışma. Bir .htaccess dosyasına koymak /www:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/web/ 
RewriteRule .* /web/%1 [QSA]

Eğer daha sonra yapılandırma dosyaları http://www.domain.com/ yerine elbette http://www.domain.com/web/ kullanımı değiştirmeniz gerekir.

Ben Symfony ucunda başka .htaccess kuralları ile müdahale olup olmadığını söyleyemem - Eğer denemek zorundayız.

Ben apache config eli var, daha iyi /www/web sana VirtualHost config /www adlı belge kök taşımak ve (php sağlamaktır open_basedir yapılandırması ile sınırlı olmadığını Bütün /www dizine erişmek için direktif).

Symfony dizin ismini beklediğini şekilde değiştirin:

// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->setWebDir($this->getRootDir().'/www/or/whatever/directory');
  }
}