Intereting Posts
Требуется очистить буфер в Node.js? Если да, то как? Если нет, то в чем проблема? Кэширование запросов изображений через PHP – If-Modified – Поскольку не отправляется Как предотвратить добавление одного и того же продукта в корзину более одного раза в magento Расшифровка .ASPXAUTH Cookie с защитой = проверка Добавить новый столбец в существующую таблицу при миграции Запрос cURL / PHP Выполняет 50% времени Странный символ тире в PHP Как я могу использовать split, но пропустить html / javascript / php и другие внутренние теги? найти, какая функция (файл) вызывает перегрузку сервера Почему этот PHP-код просто эхо «Array»? Можно ли изменить переменную $ _SESSION на стороне клиента? В PHPUnit, как я макет родительских методов? Отправьте форму на один сервер, обработайте ее, а затем опубликуйте результаты в другом домене php – xml – случайный фильтр и сохранить заказ В PHP, что подразумевается под компиляцией и временем выполнения?

.htaccess переписать правило со статическими файлами дает мне 404, что мне не хватает?

В моем проекте (Silex) есть web/index.php и активы в web/css/* , web/img/* и т. Д. Я поместил следующий файл .htaccess в корень общедоступной html-папки:

 <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteBase web RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] </IfModule> 

Каждый запрос должен быть переписан в веб-папку ( RewriteBase web директива RewriteBase web ), и если файл не существует ( !-f ), он должен быть перенаправлен на передний контроллер.

Это не работает:

 <img src="/img/myimage.png" alt="" /> 

Файл myimage.png существует, но запрос для /img/myimage.png дает мне папку 404. Если я /web/img/mmyimage.png путь к /web/img/mmyimage.png он работает.

Есть что-то, что мне не хватает?

Вы можете попытаться вручную маршрутизировать папки css и img:

 RewriteCond %{DOCUMENT_ROOT}/web%{REQUEST_URI} -f RewriteRule ^(css|img) /web%{REQUEST_URI} [L] 

Вам нужно добавить это прямо перед условием для правила маршрутизации index.php.

Замените свой .htaccess на этот код:

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ## If the request is for a valid directory RewriteCond %{REQUEST_FILENAME} -d [OR] ## If the request is for a valid file RewriteCond %{REQUEST_FILENAME} -f [OR] ## If the request is for a valid link RewriteCond %{REQUEST_FILENAME} -l ## don't do anything RewriteRule ^ - [L] # if requested files exists in /web then forward it there RewriteCond %{DOCUMENT_ROOT}/web/$1 -f RewriteRule ^(.+?)/?$ /web/$1 [L] # if requested files doesn't exist in /web then forward it to index.php RewriteCond %{DOCUMENT_ROOT}/web/$1 !-f RewriteRule ^(.+?)/?$ /web/index.php [L] 

если ваш сервер работает Apache> = 2.2.16, вы можете использовать:

 FallbackResource /index.php 

в вашем .htaccess вместо

 <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteBase web RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] </IfModule> 

См. Также fallbackresource Apache: ваша новая команда .htaccess для получения дополнительной информации.

Вам нужно сменить веб-сайт на веб-сайт, как упомянуто Kyra.

Параметры -Многопроцессоры

 RewriteEngine On RewriteBase /web RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] 

Но это не решит вашу проблему.

Основная проблема заключается в том, что ваш DocumentRoot указывает на / path / to / project, и он должен указывать на / path / to / project / web

Мне удалось исправить это с помощью этих строк:

 <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{DOCUMENT_ROOT}/web/$1 -f RewriteRule ^(.+?)/?$ /web/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ web/index.php [QSA,L] </IfModule>