2

zend Framework 2 をサブフォルダーに入れたい。スケルトン アプリは、アプリ全体をサブディレクトリに配置してから domain.com/path/to/public/index.php を使用することですぐに使用できますが、長い URL を避けたいので、そうしたくありません。パブリック フォルダー以外のすべてを DocumentRoot に配置します。

複数のモジュールを持つことを考えましたが、ドメインの下に他の種類のアプリケーションがあり、パブリック フォルダーを DocumentRoot にすることも、静的ページを提供するためだけにモジュールにする必要があるすべてを再作成することもできません。理想的には、スケルトン アプリが使用する通常のディレクトリ構造を維持することをお勧めします。

RHEL や CentOS で典型的な LAMP スタックを使用しています。

4

2 に答える 2

3

これが最善の方法かどうかはわかりませんが、これは私にとってはうまくいった方法です。

Apache virtualhosts.conf (これをいくつか変更して httpd.conf に入れることができます):

<VirtualHost *:80>
    ServerAdmin webmaster@domain.com
    DocumentRoot /var/www/html/apps
    ServerName apps.domain.com:80
    ServerAlias www.apps.domain.com
    UserDir Disabled
    ErrorLog logs/domain_error_log
    Options FollowSymLinks

    <Directory /var/www/html/apps/subdirectory/>
            #same stuff in standard zf2 .htaccess file
            RewriteEngine on
            RewriteCond %{REQUEST_FILENAME} -s [OR]
            RewriteCond %{REQUEST_FILENAME} -l [OR]
            RewriteCond %{REQUEST_FILENAME} -d
            RewriteRule ^.*$ - [NC,L]
            RewriteRule ^.*$ index.php [NC,L]
    </Directory>

アプリの場所:

/var/www/zf2_app

シンボリックリンク:

ln -s /var/www/zf2_app/public/ /var/www/html/apps/subdirectory

注意すべき点がいくつかあります。Directory ディレクティブは、URI ではなくファイルシステム パスに基づいています。VirtualHost ディレクティブで mod_rewrite を使用している場合、URI に基づいているため、忘れてしまった Apache ドキュメントの 1 行です。また、ディレクトリ ディレクティブでシンボリック リンクが機能し、mod_rewrite が機能するには、Options FollowSymLinks がオンになっている必要があります。

httpd をリロードした後、apps.domain.com/subdirectory/module を使用して zf2 アプリを参照できました。

これにより、通常の zf2 スケルトン アプリ構造を維持することができました。また、まとめておくことで、git (または他のソース管理) を使用して、分割せずにプッシュできます。

于 2013-01-18T18:13:20.997 に答える
0

このように .htaccess ファイルに環境変数を追加し、.htaccess の最初の行に ZF2_PATH 環境変数 (アプリケーション フォルダーのルートにあります) を設定します。

SetEnv ZF2_PATH /home/homefolder/zendpath
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
....
...
于 2013-01-19T18:09:46.247 に答える