1

Zend Framework を使用して Web アプリケーションを構築しています。アプリケーションの "public" フォルダーをアプリに指定する必要があります。

したがって、基本的に呼び出すhttp://localhost/myapp と表示されるはずですhttp://localhost/myapp/public/

myapp という名前の仮想ホスト ファイルを /etc/apache2/sites-available/ に作成しました。

    <VirtualHost *:80>
DocumentRoot /var/www/myapp/public/
 <Directory />
  Options FollowSymLinks
  AllowOverride None
 </Directory>
 <Directory /var/www/myapp/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
 </Directory>

</VirtualHost>

しかし、うまくいきません。http://localhost/myappを呼び出すと、アプリのディレクトリ構造が表示され、「パブリック」フォルダーをクリックすると、デフォルトで表示したいものが表示されます...以前に仮想ホストを構成したことはありませんそれは私がそれについてのチュートリアルで得た限りです。

4

2 に答える 2

1

最初のリストでは、Directory タグの値が異なっていて、'public' が完全に除外されていました。DocRoot 値の 'public' の後に末尾のスラッシュもありましたが、2 回目の試行で削除されました。それが違いを生んだかどうかはわかりませんが、末尾のスラッシュを含めないことをお勧めします.

また、疑問に思っているのは、これをローカル マシンで実行しているのでしょうか。Apacheサーバーの前にポート80を実行し始めた場合、Skypeがポート80を使用したいという問題がありました。80 が既に使用されている場合、Skype は別のポートを使用します。Skype でない場合は、ポート 80 を使用して干渉している別のアプリが存在する可能性があります。それが、別のポートで成功した理由かもしれません。

于 2011-02-11T15:08:35.750 に答える
0

わかりました、どうにか方法を見つけました...正しい/最善の方法である必要はないと思いますが...

httpd.conf 内 (apache2 フォルダー内):

Listen 10089

<VirtualHost *:10089>

    DocumentRoot "/var/www/myapp/public"

    <Directory "/var/www/myapp/public">

        Order allow,deny

        Allow from all

    AllowOverride all

</Directory>

</VirtualHost>

アプリは localhost:10089 経由でアクセスできるようになりました。apache で書き換え mod を有効にした後、必要な .htaccess をアプリのルートに追加し、すべてを index.php にリダイレクトしました (Zend フレームワークはフレンドリーな URL ナビゲーションをサポートし、そのように動作します)。 :

RewriteEngine on

RewriteRule .* index.php

パブリック フォルダー内の 2 つ目の .htaccess ファイルを使用して、.jpg、.ico などのファイルにアクセスできるようにし、すべてのインデックスにリダイレクトされないようにします。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ /index.php [NC,L]

これがいくつかの助けになることを願っています!

于 2010-02-10T11:51:46.657 に答える