Мой сайт размещен по адресу:
домен.com/dir1/dir2
Что сопоставляется внутри файловой системы (символическая ссылка) с:
/var/www/webroot/что-то/веб
В этом каталоге находится index.php моего приложения, на который должны направляться все запросы. У меня есть файл .htaccess в этом каталоге со следующим содержимым:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Это отлично работает, и функции моего приложения и все URL-адреса доступны. Проблема в том, что приложение жестко прописывает все пути к ресурсам. Например, при отображении HTML на CSS ссылаются как: <link href="/assets/css/app.css" rel="stylesheet">
, хотя на самом деле файл физически находится в файловой системе по адресу /var/www/webroot/something/web/assets/css/app.css
, и поэтому URL-адрес для ссылки на файл: domain.com/dir1/dir2/assets/css/app.css
Могу ли я решить это как-то с помощью .htaccess?
Я пробовал следующее:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/assets
RewriteRule ^ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/assets
RewriteRule ^(.*)$ /dir/dir2$1 [L]
</IfModule>
Логика этой попытки заключалась в том, что я могу позволить первому правилу обрабатывать маршрутизацию приложения. Но второе правило гарантирует, что любые попытки запросить изображения загружаются с правильного пути. К сожалению, но запрос идет к корневому каталогу домена, .htaccess недействителен. Я также не могу разместить .htaccess на домене.com.
Каковы мои варианты?
<link href="/assets/css/app.css" rel="stylesheet">
не является абсолютным. Это то, что у вас есть в вашем HTML-коде на данный момент? - person ôkio   schedule 25.04.2014