Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Несостыковка behavior и htaccess


Автор: R.M. 8.4.2006, 09:07
Здраствуйте. У меня вопрос немного разносторонний поэтому т.к. я пишу на PHP я постю его сюда. Вобщем суть такая.
На сайте есть наложение картинок друг на друга слоями. Картинки в формате png с альфа каналом.
Для того чтобы они в ИЕ отображались с прозрачностью (в других всё и так ок) я прописал behavior.
Так же у меня идёт обработка скрипта через .htaccess а именно mod rewrite, т.е. путь идёт такой http://localhost/cards/hol/roj/id/3 (вариант 1) вместо http://localhost/cards/index.php?hol=roj&id=3 (вариант 2).
Если в ИЕ я использую вариант 1 то насколько я понимаю он какимто образом конфликтует с .htaccess или с тегом <base> и behavior не срабатывает. Если же я пишу как во втором варианте в ИЕ становится всё ок.
Помогите пожалуйста разобраться. (Если я сохраняю код в обычный html т.е. обработка .htaccess'ом не идёт всё отобрадается как и долдно).
Вот код стиля где содержится <base> и подключается behavior
Код

echo "
<html>
<base href='http://localhost/cards/'>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">
<meta http-equiv=\"imagetoolbar\" content=\"no\">
<style>
/* ТЕГИ */
BODY {background-color: #FFFFFF; margin: 0px; font-size: 12px; $font}
IMG {border: 0px;}

.png { //background-image: none ! important; behavior: url('pngfix.htc');}
";


Вот кусок .htaccess с этой обработкой
Код

RewriteRule hol/([a-zA-Z]+)/id/([0-9]+) index.php?hol=$1&id=$2

Если нужны ещё какието коды скажите я дам.

Пожалуйста не перекидывайте в вёрстку, дело тут не в ней.

Автор: Ciber SLasH 8.4.2006, 17:06
А если урл к бехавиору прописать явно, т.е. behavior: url('http://localhost/cards/pngfix.htc')

Автор: R.M. 9.4.2006, 13:34
Ciber SLasH, пробовал, не помагает. Я вот вспомнил ты както упрощал этотт способ т.е. javascript вставлял сразу в документ вроде, но непомню как. Может подкинеш?

Автор: Ciber SLasH 9.4.2006, 13:53
Код

<style type='text/css'>
.pngA {
    width: 256px;
    height: 215px;
    background-image: url("logo.png");
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="logo.png");
    background-image: "none";
}
</style>
<div class='pngA'></div>

Автор: R.M. 11.4.2006, 12:55
К сожалению не помогло smile может есть какие другие варианты?

Автор: R.M. 12.4.2006, 10:03
Тема всё ещё актуальна smile

Автор: R.M. 17.4.2006, 10:23
помогите ктонить  smile  

Автор: Ciber SLasH 17.4.2006, 20:30
По ходу у тебя mod_rewrite переписывает твой URL к HTC-файлу.
Поэтому нужно как-то составить правило для него, что бы он непереписывал URL-ы к файлам HTC (возможно и к другим нестраничным файлам, как то: png, gif...). 

Автор: R.M. 18.4.2006, 10:38
Ciber SLasH, возможно, даже скорее всего но как ему это запретить? Я в этом не силён smile  

Автор: Ciber SLasH 18.4.2006, 13:17
Задай этот вопрос в разделе http://forum.vingrad.ru/index.php?showforum=121 заодно и своё правило покажи. 

Автор: R.M. 18.4.2006, 13:56
Я думаю никто небудит против если я просто сюда приглашу их smile  

Автор: Ignat 18.4.2006, 16:18
Попробуй перед своим правилом в htaccess вставь

Код

RewriteCond %{REQUEST_FILENAME} !-f


Результат запости. 

Автор: Ciber SLasH 19.4.2006, 02:02
Экспериментальным путём докопался до истины...
Оказывается всё дело в том, что для зоны "Интернет" в IE по умолчанию выставлен переключатель "Поведение двоичного кодов и сценариев" в "Отключить", что запрещает доступ к фильтру "progid:DXImageTransform.Microsoft.AlphaImageLoader", который используется в htc-скрипте.

Выход один: установить переключатель "Сервис > Свойства обозревателя... > вкладка: Безопасность > зона: Интернет > кнопка: Другой... > последний переключатель в списке: Поведение двоичного кодов и сценариев" в "Разрешить".

Но естественно эту гадость нужно проделывать у каждого пользователя твоей странички, что как понимаешь без ActiveX и правки реестра не обойтись... из этого вывод, что все старания в трубу... 

Автор: R.M. 19.4.2006, 09:36
Ignat, Спасиба дома сёдня попробую - отпишусь

Ciber SLasH, нет, весь прикол в том что если я сохраняю страницу в html то всё ок т.е. портит всё именно обработка через .htaccess 

Автор: Ciber SLasH 19.4.2006, 14:06
Цитата(Куксикус @  19.4.2006,  10:36 Найти цитируемый пост)
нет, весь прикол в том что если я сохраняю страницу в html то всё ок т.е.

В том то и дело, что htm-файлы на локальной машине попадают в зону "Мой компьютер", а если их отдавать сервером, то они попадают в зону "Интернет".

Попробуй для эксперимента отключить mod_rewrite и посмотри будет ли работать? У меня не заработало даже с отключенными правилами реврайта.

Добавлено @ 14:13 
Кстати, ещё для проверки занеси свой хост в "Надёжные" узлы в IE, после этой манипуляции всё работает. 

Автор: R.M. 19.4.2006, 15:16
Ciber SLasH, 
Цитата(Ciber SLasH @  19.4.2006,  15:06 Найти цитируемый пост)
Попробуй для эксперимента отключить mod_rewrite

В моём первом посте я писал
Цитата(Куксикус @  8.4.2006,  10:07 Найти цитируемый пост)
Так же у меня идёт обработка скрипта через .htaccess а именно mod rewrite, т.е. путь идёт такой http://localhost/cards/hol/roj/id/3 (вариант 1) вместо http://localhost/cards/index.php?hol=roj&id=3 (вариант 2).
Если в ИЕ я использую вариант 1 то насколько я понимаю он какимто образом конфликтует с .htaccess или с тегом <base> и behavior не срабатывает. Если же я пишу как во втором варианте в ИЕ становится всё ок.

Т.е если .htaccess не обрабатывает то всё в ИЕ работает 

Автор: R.M. 20.4.2006, 09:29
Цитата(Ignat @  18.4.2006,  17:18 Найти цитируемый пост)
Попробуй перед своим правилом в htaccess вставь

Пробовал. К сожалению без изменений smile может есть ещё какието соображения? 

Автор: dm9 20.4.2006, 13:03
Цитата(Куксикус @  20.4.2006,  10:29 Найти цитируемый пост)
Пробовал. К сожалению без изменений  может есть ещё какието соображения? 


После этого надо было файл запрашивать напрямую: http://localhost/folder/asd.hcc
 

Автор: R.M. 21.4.2006, 10:47
dm9, т.е. полный путь указывать? 

Автор: dm9 21.4.2006, 10:57
Млин. Ну, то, что Игнат тебе написал - отключает пропуск через твой скрипт существующих файлов. Если на сервере файл лежит, отдаётся он. Если не лежит - вызывается твой скрипт. Я для этих целей пользуюсь таким .htaccess:

RewriteEngine on
Options +FollowSymlinks
# If requested file doesn't exist
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
# If requested folder doesn't exist
#RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ index.php [L]

# - комментарий...
 

Автор: R.M. 21.4.2006, 14:32
dm9, угу понятно, терь у меня есть несколько советов и я их сёдня попробую. Отпишусь и в репу дам тому кто прально подсказал smile  

Автор: Darhazer 21.4.2006, 17:38
Привет
Когда польюя mod_rewrite в html-е всегда начинаю адреса с / , т.е. 
Код
url('/someimage.png');

Так знаю, что скрипт всегда откроет http://мой-сайт/someimage.png и для него не имеет значение, если от мой-сайт/index.php или мой-сайт/software/news/somethink/any/252/index.php 

Если картинка в images: /images/someimage.png
И некогда images/someimage.png 

Автор: R.M. 22.4.2006, 12:18
Пробовал и прямой путь и относительный и через z:\ и через http:// нифига smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)