2

私はこれで壁を叩いています...

サブディレクトリ内にzendフレームワークアプリケーションを確立する必要があります。

つまり、ドメインはtricell.ssであり、アプリケーションのメインディレクトリとしてtricell.ss/tricellを使用したいと思います。

何をしたか:

  1. 設定(application.ini)で次の設定を行いました。

    resources.frontController.baseUrl = "/tricell"
    
  2. 設定で別の変数を作成しました

    baseUrl  = "/tricell"
    
  3. 私のブーストラップにはこれがあります:

    $router     = new Zend_Controller_Router_Rewrite();
    $frontController->setRouter($router);
    $frontController->setBaseUrl($this->config->baseUrl);        
    
    $frontController->dispatch();
    
  4. 私のレイアウトでは、以下を使用して画像を表示しようとしています。

    $this->baseUrl('/img/btn.png')
    
  5. これが私の仮想ホスト構成です:

    <VirtualHost *:80>
    DocumentRoot "/HTDOCS/tricell/tricell/public_html"
    ServerName tricell.ss
    RewriteRule ^$ [L] 
    
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www.)?tricell.ss$
    RewriteRule ^(/)?$ tricell [L]
    </VirtualHost>
    
  6. これが私の.htaccessです:

SetEnvAPPLICATION_ENV開発

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

問題は、画像を表示しようとしても何も起こらないことです。URLで画像を取得しようとしている場合:

http://tricell.ss//tricell/img/btn.png

間違ったコントローラーに関する情報を取得しています。どうすればこれを正しくすることができますか?私は(問題なく)tricell.ssのようなルートドメインの構成を作成してから画像、つまりtricell / ss / img / btn.pngを取得できますが、サブディレクトリで作業したいので、画像ではそれを行うことができません。私がここで間違っていることは何ですか?

4

3 に答える 3

1

私は自分の問題を解決することができました...それは非常に単純ですが、このすべての書き換えルールに非常に混乱していました.

いつも言っているように、tricell は混乱を招きます。それにもいくつか変更を加えましょう。したがって、tricell.ss/sub のようなものを実現するには、次のことを行う必要があります。

  1. アプリケーション全体を /HTDOCS/tricell/tricell/sub 内に配置します
  2. vhost を次の行から変更します: DocumentRoot "/HTDOCS/tricell/tricell/public_html" から: DocumentRoot "/HTDOCS/tricell/tricell/"
  3. /HTDOCS/tricell/tricell/sub ディレクトリにさらに別の .htaccess を挿入します。

    RewriteEngine オン

RewriteRule ^.htaccess$ - [F]

RewriteCond %{REQUEST_URI} ="" RewriteRule ^.*$ /sub/ublic_html/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/sub/public_html/. $ RewriteRule ^(. )$ /sub/public_html/$1

RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.*$ - [NC,L]

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

これですべての問題が解決しました。

于 2011-12-01T10:45:56.613 に答える
1

これを機能させるためにできる最も簡単なことは次のとおりだと思います。

新しい ZF プロジェクトから開始するか、すべての zend ルートと、作成した .htaccess または httpd.conf/httpd-vhosts.conf 内の特別な構成を削除します。

構成ファイルで設定した baseUrl オプションを取り除きます。

index.php ファイルと .htaccess ファイルを/HTDOCS/tricell/tricell/public_html/tricellフォルダーに配置します。

プロジェクトの残りの部分 (コントローラー、モデル、構成など) を Web ルートの外に配置します。この例では、それらが に配置されていると仮定し/HTDOCS/tricell/tricell/zfprojectます。

index.php を編集して次のように変更します。

defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// to:

defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../zfproject/application'));

これで、アプリケーションは、ベース ディレクトリが yoursite.com/tricell で実行されます。

IndexController.php の URL はhttp://yoursite.com/tricell/indexになります。

ベース URL が「tricell」であることを Zend に伝えるために特別なことをする必要はありません。ビュースクリプトで$this->baseUrl()パスに使用することを確認してください。これにより、/tricell をすべての先頭に手動で追加する必要がなくなります。また、プロジェクトを別のディレクトリ/パスに移動した場合でも、何も変更する必要はありません。新しいパスに対処します。

于 2011-11-30T22:50:54.243 に答える