2011-07-28 7 views
1

私のサイトは、zendアプリケーションの特定のディレクトリに仮想ホストを持っている必要があります。特定のディレクトリにあるApache仮想ホスト

NameVirtualHost *:80 
<VirtualHost *:80> 
    DocumentRoot "/var/www/cms/public" 
    ServerName persian_literature 
    # This should be omitted in the production environment 
    SetEnv APPLICATION_ENV development 
    <Directory "/var/www/cms/public"> 
     Options Indexes MultiViews FollowSymLinks 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

SetEnv APPLICATION_ENV development 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

がローカルホスト上で、私は/etc/apache/httpd-vhosts.confにこの行を追加:ユーザーがwww.example.comに入ると、それは通常のドキュメントルートに行く必要がありますが、ユーザーがwww.example.com/cmsに移動したときにその.htaccessファイルは次のようであるそれは/var/www/cms/publicに行くべき

今すぐhttp://localhost//var/www/cms/publicになり、すべてのものが動作します。私の質問は、上記のコードを変更して、http://localhost/を通常のディレクトリルート(他のアプリケーションを使用できるようにする)にし、http://localhost/cmsを仮想ホストにするにはどうすればいいですか?

答えて

3

仮想ホストは、ディレクトリレベルではなく、ホスト名/ドメイン名レベルで実行されます。あなたは(シンボリックたぶん

+0

このコードを 'apache.conf'に追加します。現在は 'http:// localhost/cms /'が正しい場所を指していますが、 'http:// localhost/cms/member/login'のようなアプリケーションの他の部分は機能しません。 –

+0

あなたは '/'ではなく '/ cms'に現在住んでいることをCMSに伝える必要があります。 –

0

シンボリックリンクを(これは.htaccessファイルでは動作しません).confファイルに

Alias /cms /var/www/cms/public 

を置くことによって、サーバー上の他のディレクトリにURI/CMSを指すように別名を使用することができますリンク)?あなたはまだコースのエントリーを持っているはずです。そして、あなたは設定(vhostの設定は私が思うに、おそらく.htaccess)を入れなければならないでしょう、そのapacheはシンボリックリンクに従ってください。

関連する問題