0

Linux Apache WebサーバーでZendフレームワーク1を使用しており、「go」という名前のサブフォルダーに配置する必要があり、.htaccessを次の行に配置します(goフォルダー内):

# Rewrite rules for Zend Framework 
RewriteEngine on 
RewriteRule ^(.*)$ /public/$1 [QSA,L]

そして、私の domain.com/go に入った後に得たものは次のとおりです。

見つかりません

要求された URL /index.php がこのサーバーで見つかりませんでした。

さらに、ErrorDocument を使用して要求を処理しようとしたときに、404 Not Found エラーが発生しました。

私は何を間違っていますか?

「/public」を「public」に変更した後、「not found」エラーも発生します。

アプリに go.domain.com のようなサブドメインを使用していますが、最初の方法が機能しない理由を知りたいですか? .htaccess はサブディレクトリで動作しませんか?

4

2 に答える 2

0

次の解決策は私のために働いた:

まず、次の内容の.htaccessファイルを/goディレクトリに配置します。

RewriteEngine on 
RewriteRule ^(.*)$ public/$1 [NC,L]

これにより、 /go url に対して行われたすべてのリクエストが public ディレクトリにリダイレクトされます。

RewriteBase次に、必要でない限り、/go/public/.htaccessファイルに何も含まれていないことを確認します。

最後に、コントローラ プラグインを作成し、次のコードをrouteStartup().

Zend_Controller_Front::getInstance()
                       ->getRequest()
                       ->setBaseUrl('/database/');

$this->baseUrl()この最後のステップにより、ヘルパーのみを使用して HTML にリソース (css、js、画像) を簡単に追加できるようになります。各ファイル パスに/goを追加する必要はありません。

于 2014-01-03T13:33:01.117 に答える
0

これを機能させるには RewriteBase を使用する必要があります

RewriteBase /go

.htaccess を他の場所ではなく public フォルダーに配置します。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase

于 2012-12-07T23:43:22.300 に答える