Маскируем ссылки с помощью mod rewrite

Гораздо симпатичнее будет выглядеть ссылка вида http://fixblog.ru/sape, чем ссылка вида http://www.sape.ru/r.77b51afb98.php. Пример – блок партнеры справа.

Для этого используется mod rewrite, который должен поддерживать ваш сервер на apache (большинство платных хостингов поддерживают).

И так, создаем в корне папку, например partner, в ней файл sape.php.

В файл вставляем следующий код:

<?php $URL="http://www.sape.ru/r.77b51afb98.php";
header("Location:$URL");
exit();
?>

URL естественно заменяем на свой.

Далее в корне сайта открываем файл .htaccess (или создаем если его нет), и в него вставляем слеудующее:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([A-Za-z]+)$ partner/$1.php [L]
</IfModule>

Первый код делает редирект пользователя на указанный URL, второй делает первый файл, находящийся по адресу /partner/sape.php, доступным по адресу /sape.

Соответственно можно создавать файлы с любыми именами, где имя файла (XXX), например partner/XXX.php будет соответствовать адресу /XXX

2 Comments | Filed under Fix, Новичкам

Прозрачный PNG в IE 6

Достигается на самом деле довольно-таки легко. Берем прозрачный png, берем следующий код:
<script type="text/javascript">
function fixPNG(element)
{
//Если браузер IE версии 5.5-6
if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent))
{
var src;
if (element.tagName==’IMG’) //Если текущий элемент картинка (тэг IMG)
{
if (/\.png$/.test(element.src)) //Если файл картинки имеет расширение PNG
{
src = element.src;
element.src = "/blank.gif"; //заменяем изображение прозрачным gif-ом
}
}
else //иначе, если это не картинка а другой элемент
{
//если у элемента задана фоновая картинка, то присваеваем значение свойства background-шmage переменной src
src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);
if (src)
{
src = src[1]; //берем из значения свойства background-шmage только адрес картинки
element.runtimeStyle.backgroundImage="none"; //убираем фоновое изображение
}
}
//если, src не пуст, то нужно загрузить изображение с помощью фильтра AlphaImageLoader
if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’" + src + "‘,sizingMethod=’scale’)";
}
}
</script>
Вставляем ПЕРЕД следующим html:
<div style=”background: url(some.png) no-repeat;” class=”someclass”><a href=”#”>Ссылка</a></div>
Или таким, если png вставляется не бекграундом:
<div class=”someclass”><img src=”some.png” /></div>
Остается добавить в css следющее:
.someclass {
filter:expression(fixPNG(this));
}

Все, теперь png во всех браузерах прозрачная!
Остается добавить – что если сверху png присутствуют какие-либо ссылки, или интерактивные поля (формы и т.п.), то они будут ниже картинки и не кликабельны, решается это просто, добавляется объекту, который нужно поставить выше position: relative;
На данном примере это выглядит так:
.someclass a {
position: relative;
}

17 Comments | Filed under Fix, Новичкам