![]() |
|||||||||||||||||||||
|
|
|||||||||||||||||||||
Браузерозависимость (Как предоставить браузеру код, понятный ему лучше других)Идеальный сайт выглядит одинаково во всех браузерах. Идеальный сайт выдает каждому браузеру html-код, предназначенный именно для этого браузера. Если первое утверждение не нуждается в пояснениях и доказательствах, то со вторым возникает хитрый момент. С одной стороны, писать отдельный код под каждый браузер утомительно, но с другой, — еще более утомительной может оказаться «тонкая настройка» одного-единственного файла, чтобы он везде выглядел одинаково. Интересно, что второе утверждение об идеальности сайта построено на неидеальности браузеров — вели бы они себя одинаково, не пришлось бы писать разный код. Что выбирать — писать несколько файлов или пытаться создать переносимый код — решать кодеру. Здесь рассказано о том, как настроить сервер, чтобы он самостоятельно выдавал браузеру нужный файл. От веб-кодера при этом потребуется лишь создать несколько вариантов файла и небольшую таблицу соответствия имен этих файлов нужным браузерам. Идею можно развить, дополнив сайт специальными файлами для поисковых систем и удалив из кода всю ненужную для поиска html-разметку. При этом размер файла скорее всего заметно сократится. Текстовое содержание всех файлов должно совпадать, если вы не преследуете иные цели. Настройка Apache Для простоты предположим, что все файлы
на сайте — индексные, то есть адрес, по которому
пользователь запрашивает любой ресурс на сайте, оканчивается
названием каталога. Например, так:
Адреса ресурсов при такой организации документов выглядят очень
аккуратно, и скрывают (до некоторой степени) детали реализации.
Например, в адресах не будут видны расширения файлов
Чтобы не осложнять напрасно работу веб-кодера разумно
оставить возможность создания единого файла для всех браузеров. Пусть этим
файлом будет Веб-сервер может самостоятельно определять, следует ли различать
браузеры или нет — для этого нужно записать в конфигурационный
файл AddHandler dep-redir .dep Action dep-redir /cgi-bin/dep-redir.pl DirectoryIndex index.dep index.html Инструкция Таблица соответствий Файл Например, файл зависимостей может выглядеть так (значения в строках разделены табуляцией): Opera index-op.html MSIE index-ie.html Netscapе index-nn.html Mozilla index-mz.html Lynx index-lx.html Порядок строк в этом файле имеет значение. Описанный далее
обработчик остановится, как только найдет первое подходящее название.
Например, если удалить первую строку, то для браузера Internet
Explorer совпадет строка Обработчик Осталось рассмотреть устройство обработчика,
который будет вызван, если сервер обратится к файлу
Фактически необходимо проделать некоторую дополнительную работу, чтобы
определить каталог, в котором находится запрошенный документ. Это
можно сделать, отбросив часть переменной
Найденное имя каталога следует обязательно указать при печати http-заголовка. Таким образом, реальный заголовок может иметь такой вид: Location: /cgi/browserdep/index-ie.html\n\n Поскольку в поле Пока еще ничего не было сказано о чтении файла
с таблицей зависимостей. Обработать его довольно просто. Локальное
имя файла (в файловой системе сервера) можно определить
из переменной
По этой причине помимо файла
Полный исходный код скрипта-обработчика выглядит так
(в соответствии с записями в конфигурационном файле этот
скрипт следует сохранить под именем
#!/usr/bin/perl
my $user_agent = $ENV{'HTTP_USER_AGENT'};
my ($dir) = ($ENV{'REDIRECT_URL'} =~ m/(.*\/)[^\/]+$/);
my $file = $ENV{'PATH_TRANSLATED'};
my $ret = "";
open DEP_REDIR, $file;
foreach my $rule (<DEP_REDIR>)
{
my ($pattern, $redir) = split (/\t/, $rule);
if ($user_agent =~ m/$pattern/i)
{
$realfile = "$redir";
last;
}
}
close DEP_REDIR;
$realfile = "index.html" unless $realfile;
print "Location: $dir$realfile\n\n";
Реклама |
|||||||||||||||||||||
| Copyright © dmsdesign.ru Электронная почта: send@dmsdesign.ru |
|||||||||||||||||||||