ルート ディレクトリにファイルを含む 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
が発生します (まったく到達していません)。
他の書き換えは正しく動作します (少なくとも私が知る限り)。
なぜこれが起こるのか、これを修正する方法はありますか?
前もって感謝します。