.htaccess за исключением переписать CSS и изображения - PullRequest
3 голосов
/ 14 января 2012

У меня есть некоторые проблемы с перезаписью URL-ов

мой файл .htacces:

RewriteEngine On
RewriteBase /bsc/
RewriteRule ^(.+/?)$ index.php?url=$1 [NC,QSA,L]

структура моего файла и папки:

bsc/
---|.htaccess
---|index.php
---|css/
-------|style.css
---|images/
----------|logo.png
----------|image1.jpg
----------|image2.jpg
---|controller/
--------------|bootstrap.php
...

Когда у меня естьСледующая ссылка

localhost/bsc/page.html

Чем моя работа CSS или я могу приступить к работе.Но когда у меня есть следующие ссылки:

localhost/bsc/page/subpage.html
localhost/bsc/page/subpage/subsubpage.html
localhost/bsc/page/subpage/subsubpage/subsubsubpage.html

Я не могу заставить css работать, css перенаправляется на

localhost/bsc/page/css/style.css
localhost/bsc/page/subpage/css/style.css
localhost/bsc/page/subpage/subsubpage/css/style.css

Вторая часть проблемы заключается в том, что мои ссылки не имеютте же расширения или любое расширение.Возможны следующие ситуации:

localhost/bsc/page/subpage
localhost/bsc/page/subpage/
localhost/bsc/page/subpage.php
localhost/bsc/page/subpage.html
localhost/bsc/page/subpage/subsubpage
localhost/bsc/page/subpage/subsubpage/
localhost/bsc/page/subpage/subsubpage.php
localhost/bsc/page/subpage/subsubpage.html
...

Теперь определенное правило перезаписи работает для разных ссылок, но как добавить исключенное правило для CSS и изображений?


Я получаю следующий .htaccess, который работаетдля css для всех моих условий:

RewriteEngine On
RewriteBase /bsc/
RewriteCond %{REQUEST_FILENAME} !\.css
RewriteRule ^(.+/?)$ index.php?url=$1 [NC,QSA,L]

После прочтения комментариев и некоторого времени я получаю следующий файл .htaccess с неплохими результатами:

RewriteEngine On
RewriteBase /bsc/
RewriteRule ^(.+/?)?(/|\.htm|\.php|\.html|/[^.]*)$ index.php?url=$1 [NC,QSA,L]

и мой тег ссылкиis:

<link rel="stylesheet" type="text/css" href="/bsc/css/style.css" />

Теперь в URL есть только одно условие, когда я не могу получить правильный URL-запрос.Следующий URL не получает последний параметр:

localhost/bsc/page/subpage
localhost/bsc/page/subpage/subsubpage

Я не получаю subpage или subsubpage , другие условия работают.В этой ситуации apache и .htaccess лоток для поиска файлов или папок ....

Возможно ли добавить отсутствующее условие или можно создать простейшее правило перезаписи или несколько правил

Ответы [ 3 ]

9 голосов
/ 15 января 2012

Вам, вероятно, просто нужно использовать абсолютный URL для вашего CSS,

т.е.

<link rel="stylesheet" type="text/css" href="/css/style.css">

вместо

<link rel="stylesheet" type="text/css" href="css/style.css">

Помещение косой черты в переднюю часть приводит к ее «корню» URL, что делает ее последовательной на всех страницах.

4 голосов
/ 01 октября 2013

Я применил переписывание URL к проекту в основном php. Я столкнулся с той же проблемой. 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]
0 голосов
/ 15 января 2012
  1. Добавьте условие RewriteCond %{REQUEST_FILENAME} !-f перед перезаписью.
  2. Вы должны включить css с src="/css/style.css" и НЕ src="css/style.css" (обратите внимание на пропущенное начало /.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...