0

ルート ディレクトリにファイルを含む Zend Framework アプリケーションがあり、.htaccessすべてのトラフィックを/publicディレクトリに転送しindex.phpます。

の内容は次の.htaccessとおりです。

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

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

RewriteCond %{REQUEST_URI} !^/(upload|img|js|css|less)/.*$
RewriteCond %{DOCUMENT_ROOT}/public/upload%{REQUEST_URI} -f
RewriteRule ^(.+\.(jpg|png|mp3))$ /public/upload%{REQUEST_URI} [NC,L]

;RewriteCond %{REQUEST_URI} !^/public/.*$
;RewriteRule ^(.*)$ /public/$1

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

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

ご覧のとおり、コメント アウトされた 2 行があります。

にトラフィックを誘導すると思われるセクションは/public、ローカル サーバーと共有ホストで動作しますが、クライアントのサーバーでは惨めに失敗するようです。

この 2 行をコメント アウトして、ブラウザにサイトのアドレスを入力すると、ディレクトリ リストが表示されます。/publicアドレスに追加すると/public/index.php、予想どおり に移動しますが、リクエストが正しくリダイレ​​クトされなかったため、JS および CSS ファイルへのリダイレクトもありません。

行のコメントを外すと、500 内部サーバー エラーindex.phpが発生します (まったく到達していません)。

他の書き換えは正しく動作します (少なくとも私が知る限り)。

なぜこれが起こるのか、これを修正する方法はありますか?

前もって感謝します。

4

1 に答える 1