Перезапись URL: css, js и изображения не загружаются

У меня есть следующее правило для.htaccess

Options +FollowSymLinks

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteRule ^detail/([0-9]+)/?$ detail.php?id=$1

Перенаправляетhttp://localhost/detail/123 URL кhttp://localhost/detail.php?id=123, Страница успешно перенаправляется, но проблема в том,CSS, JS, and images не загружаются,

CSS, JS файлы расположены подhttp://localhost/css/ а такжеhttp://localhost/js/

Одним из решений является использованиеабсолютный путь (ex / CSS или / js, а не просто CSS /, / js, но это не кажется надежным решением, так как мы должны изменить его для всех файлов,

Любое другое решение, основанное на.htaccess правила, которые не зависят от редактирования всех файлов PHP и позволяют нам использовать «относительные пути»?

 Bhavesh Gangani16 окт. 2012 г., 17:34
они вhttp://localhost/css/style.css а такжеhttp://localhost/js/js.js
 stash_man28 июл. 2016 г., 15:50
Также я должен сделать пустой каталог, в этом случае "детали" для перезаписи, чтобы работать, есть ли способ обойти это?
 mk_8914 окт. 2012 г., 16:47
Вы должны использовать абсолютный путь, основанный на вашей системе, например, если вы используете Linux, это было бы что-то вроде/var/www/css/
 Carlos15 окт. 2012 г., 18:30
Exactly Где именно находятся ваши каталоги css и js?

Ответы на вопрос(5)

добавьте перед правилом перенаправления (RewriteRule ^ detail / ([0-9] +) /? $ detail.php? id = $ 1)

RewriteRule ^(.+)/(admin|css|fonts|ico|include|js|images)/(.*)$ $2/$3 [L]

и он на самом деле пытается поделиться некоторыми хорошими практиками.

Однако, поскольку вы, похоже, не удовлетворены этим ответом, здесь есть другое решение. Просто вставьте эту строку в ваш .htaccess перед любой командой Rewrite:

RedirectMatch permanent ^/detail/((css|js)/.*)  /$1

Он перенаправит все исходные 404 запроса /details/css/style.css и /details/js/js.s в их фактическое местоположение. Ни особенно симпатичный, ни элегантный, но он просто работает.

 Dimitris Papageorgiou31 мая 2016 г., 15:55
Я попробовал выше, и это не работает.

той же проблемой. CSS, Js и изображения не загружались. Я использовал это, и это сработало для меня.Источник

# Allow any files or directories that exist to be displayed directly
RewriteCond ${REQUEST_URI} ^.+$
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]

/ js, а не просто css /, / js, но это не выглядит надежным решением, так как мы должны изменить его для всех файлов,

Это потому, что ваши относительные URI изменили свою базу. Первоначально база/ когда страница/detail.php?id=123и браузер правильно заполняет относительные ссылки/ база. Но когда браузер переходит на страницу вроде/detail/123 база внезапно становится/detail/ и он пытается добавить это перед всеми относительными URL-адресами и, таким образом, ни один из них не загружается.

Вы можете сделать ваши ссылки абсолютными или изменить базу URI в заголовке ваших страниц (между<head> </head> теги):

<base href="/">
 jscripter03 дек. 2014 г., 04:32
хорошо для URI базы
 Basil Musa26 мая 2015 г., 11:38
Спасибо Джон. Самое быстрое и удобное решение.
 soonic13 мар. 2016 г., 00:52
Этот помог мне<base href="/project/"> и мне не нужно менять путь для всех моих скриптов или CSS-файлов. Спасибо, Джон.
 Bhavesh Gangani15 окт. 2012 г., 11:15
любое другое решение, а не редактирование фактических файлов php, html (например,.htaccess подать правила)
Решение Вопроса

Вы можете стать умным и использовать регулярные выражения и заменить все нужные вам файлы, которые будут похожи на несколько строк, и все готово. Сколько мест можно изменить? И вы должны использовать шаблон.

Это должно работать, но я бы не пошел по этому пути.

RewriteRule ^detail/(css|js|img)/(.*)?$ /$1/$2 [L,QSA,R=301]

 Anthony Hatzopoulos29 окт. 2012 г., 14:20
@BhaveshGangani вроде да, ноне вид с протоколом и доменомhttp://example.com/css/style.css, но этот тип абсолютного пути к корневому каталогу:/css/style.css
 Bhavesh Gangani27 окт. 2012 г., 12:08
Вы имеете в виду, что я должен использовать «Абсолютные Пути» во всех моих ресурсах? Вместо "родственников"

Ваш ответ на вопрос