По крайней мере одна проблема, которую я вижу, состоит в том, что правила перезаписи в файле .htaccess
неверны.
С учетом этих правил:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ public/index.php [QSA,L]
Эти правила равны:
RewriteCond %{REQUEST_FILENAME} -s [OR]
# Запрос представляет собой обычный файл с размером> 0
RewriteCond %{REQUEST_FILENAME} -l [OR]
# Запрос к файлу, который является символической ссылкой
RewriteCond %{REQUEST_FILENAME} -d [OR]
# Запрос в каталог, который существует
И если что-либо из вышеперечисленного верно, запрос переписывается на public/index.php
, что неверно. Если запрос для файла, который существует на диске, вы не хотите перезаписывать его; вместо этого вы просто хотите передать этот файл.
Правильный файл .htaccess
должен выглядеть примерно так:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ public/index.php [NC,L]
Здесь говорится, что если запрос относится к файлу с размером> 0, каталогу или символической ссылке, то перенаправьте запрос на фактический запрошенный файл (RewriteRule ^.*$ -
). Если ни одно из этих условий не выполняется, перепишите запрос в index.php.
В отдельном примечании я бы вообще избавился от каталога public
. Возьмите содержимое public
и поместите его в /dsa
. dsa
теперь ваша папка public
. Вы можете хранить каталог application
в любом месте системы или, если вам необходимо поместить его в папку dsa
из-за ограничений файловой системы, обязательно добавьте в файл .htaccess
правило, запрещающее любой доступ к * Папка 1032 *. Затем вам просто нужно быстро изменить файл index.php
, указав правильный путь к application
с использованием константы APPLICATION_PATH
.
Я считаю, что эти два изменения должны исправить ваши проблемы.