mod_rewrite

1 23
[Удален]
#21
N_MONax:
А так не судьба сделать:
sait.zone/url/somesite.zone/
И в пехепехе, соответвенно, header("Location: http://{$_GET['url']}");
ИМХО, адрес без "http://" по центру красивее смориться, да и браузер с ума не сходит...

А как вы тогда сделаете редирект на ftp:// (я же писал про использование протокола ;-) )

Вобщем-то код готов... кому надо -

functions.php


include_once("global_conf.php");

// using global_conf _HOST
// makes url to redirect script
// uses .htaccess
// do nos usEs for the _HOST
function url($url)
{
// uses protocol?
// http://domain.ZONE
// https://domain.ZONE
// ftp://domain.ZONE
if (!preg_match("/^(\w{3,5}:\/\/).+/", $url, $matches)) // add http:// protocol if not specified
{
$url = 'http://' . $url;
}

// uses the same _HOST ? do not use redirect via url.php
if (preg_match("/^".str_replace("/", "\/", _HOST).".*/", $url))
return $url;

// another host go redirect
return _HOST . "url/" . trim ($url);
}

// makes the html link
function a ($url = _HOST, $inner = '', $target = '_self', $style = '', $title = '')
{

if ($title != '') // title is specified
{
$title = "title='$title'";
}
if ($inner == '') // inner isnt specified - use _HOST defined value
{
$inner = _HOST;
}
if ($target == '') // target isnt specified - use _self target
{
$target = '_self';
}
// style may be a style or class
if ($style != '') // class name do not contains : sybmol
{
if (preg_match("/^.+:.+$/", $style)) // we have a style
$style = "style='$style' ";
else if (preg_match("/^.+$/", $style)) // we have a class
$style = "class='$style' ";
}
return "<a href='".url($url)."' target='$target' $style $title>$inner</a>"; // the html link
}

print a("forum.searchengines.ru", "SEARCHENGINES", "_self", 'color:red', "SEARCHENGINES FORUM ON THE WEB");

global_conf.php


define ("_HOST", "http://" . $_SERVER['HTTP_HOST'] . "/");

url.php


<?

if (@$_GET['url'])
{
$url = preg_replace("/^(\w{3,5})(:\/)/", "\\1://", $_GET['url']);
header("HTTP1.1/301 Moved Permanently"); // for curl functions on other sites
header("Location: " . $url);
}
else
{
die ("Couldnt read link");
}

?>

.htaccess


Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.sait.zone$ [NC]
RewriteRule ^(.*)$ http://sait.zone/$1 [R=301,L]

RewriteBase /
RewriteRule ^url/(.+)$ url.php?url=$1 [L]
[Удален]
#22

ой как страшно .... выкладывать пример - хорошо, но ваш мне слегка не нравится :( страшный он какойто))

[Удален]
#23
bearman:
ой как страшно .... выкладывать пример - хорошо, но ваш мне слегка не нравится :( страшный он какойто))

:D Согласен - страшный :) Но как быть? Возможность улучшить взаимодействие в команде разработчиков - делать всё одинаково, в том числе и ссылки, - для этого и нужна функция a () - я так понимаю, что вы про нее сказали, что она страшная... На самом деле ничего сложного - привыкнуть писать a (ссылка, описание)... Со временем станет даже привычней, нежели писать <a href='ссылка' target='self'>описание</a>

Можно сделать перегрузку типа a ($href, $inner, $additional_params)

и писать что то вроде a ('forum.searchengines.ru', 'Серченжинс', "style='color:red;text-decoration:underline' title='Серченжинс'");

Просто появляются некоторые разногласия внутри команды, особенно если "teammater" плохо знает html... ;)

Плюс, мы сейчас делаем двуязычный проект... Ну так вот я пишу

print $lang == 'ru' ? a('https://searchengines.guru/ 'Серченжинс') : a('https://searchengines.guru/ 'SearchEngines');

в одном случае (если $lang == 'ru') я получу

<a href='http://myProject.ru/url/;Серченжинс</a>

во втором

<a href='http://myProject.net/url/;SearchEngines</a>

Таким образом я убиваю 2 зайцев - мой напарник не может затупить и я сам всегда напишу правильно :) Плюс возможность менять язык без проблем...

Как сделать удобней - предлагайте - выслушаю варианты :)

[Удален]
#24
So1:
:D Согласен - страшный :) Но как быть? Возможность улучшить взаимодействие в команде разработчиков - делать всё одинаково, в том числе и ссылки, - для этого и нужна функция a () - я так понимаю, что вы про нее сказали, что она страшная... На самом деле ничего сложного - привыкнуть писать a (ссылка, описание)... Со временем станет даже привычней, нежели писать <a href='ссылка' target='self'>описание</a>
Можно сделать перегрузку типа a ($href, $inner, $additional_params)
и писать что то вроде a ('forum.searchengines.ru', 'Серченжинс', "style='color:red;text-decoration:underline' title='Серченжинс'");

Просто появляются некоторые разногласия внутри команды, особенно если "teammater" плохо знает html... ;)
Плюс, мы сейчас делаем двуязычный проект... Ну так вот я пишу
print $lang == 'ru' ? a('https://searchengines.guru/ 'Серченжинс') : a('https://searchengines.guru/ 'SearchEngines');
в одном случае (если $lang == 'ru') я получу
<a href='http://myProject.ru/url/;Серченжинс</a>
во втором
<a href='http://myProject.net/url/;SearchEngines</a>

Таким образом я убиваю 2 зайцев - мой напарник не может затупить и я сам всегда напишу правильно :) Плюс возможность менять язык без проблем...
Как сделать удобней - предлагайте - выслушаю варианты :)

ооооо как все ужасно! я бы вас с напарником уволил)))

насчет /ru /net

я бы использовал абсолютный путь если уж на то пошло

/url/lalal

/url/lala

он для любого домена одинаков.

в остальном .. даже не знаю, можно конечно функцию, но как нить преукрасить ее чтоли %) может сугубо придирка, простите) не в настроении сегондя слегка

[Удален]
#25
bearman:
ооооо как все ужасно! я бы вас с напарником уволил)))

Для начала мы бы работать ни в какую компанию не пошли, ибо если бы у меня был начальник я бы ему давно разбил рожу только потому что не люблю когда мной кто то руководит :) Недавно заказчик сказал уже "Мне нужно как то вас контролировать" после чего получил не очень доброжелательный ответ... без матов, конечно, - я все таки умею себя контролировать, но готов поспорить, что ему не понравилось... Ну... что сказать - такой я человек.

bearman:

насчет /ru /net

я бы использовал абсолютный путь если уж на то пошло

/url/lalal
/url/lala

это относительный ;-)

/url/lala - относительно корня. Абсолютный - это как раз http://sait.ru/url/lalala ;-)

bearman:
он для любого домена одинаков.

_HOST . 'относительный путь' тоже для любого домена одинаков.

Давайте теперь представим что вам нужно сделать ссылку на документ, располагающийся на нашем домене и на чужом.

У вас есть функция url($url), которая бы возвращала вам правильный url (если это ссылка на документ, находящийся в нашем домене - то это просто ссылка, если же в чужом - редирект через url.php на нашем домене). Использование относительного пути:


function url($url)
{
// если не указан протокол - добавить в начало http://
if (наш домен)
return trim(str_replace(_HOST, "", $url)); // вычленили относительный пусть удалив домен

if (чужой домен)
return "/url/" . $url; // до этого мы нашли соответствие и при помощи preg_replace удалили протокол + домен + если надо добавили слеш вперед
}

Правильно? :)

А если это ссылка на главную?...

url ("site.zone") вернет пустую строчку и будет у вас ссылка <a href='' target='_self'>иннер</a>

Это означает то, что при щелчке вас перекинет на ту же страницу, на которой вы находитесь, а не на site.zone

Если та же ситуация произойдет, но домен не наш... получите ссылку на href='http://site.zone/url/'

Вобщем, я не знаю в чем удобство использования относительного пути...

bearman:
в остальном .. даже не знаю, можно конечно функцию, но как нить преукрасить ее чтоли %) может сугубо придирка, простите) не в настроении сегондя слегка

предложите чем преукрасить - преукрасим ;-)

Если чем то не нравится, я ж говорю - сделайте лучше - я буду с БОЛЬШИМ удовольствием использовать - я только за удобство... Чужой код, если он качественный, использую с большим удовольствием - вот например неписали ребята PHPMailer - я его использую с большой радостью несмотря на то, что я читал RFC 882 и знаю как нужно отправлять почту, - мне этот класс нравится, он удобен - я его использую... Понравился мне open_wysiwyg - я его опять же использую (вместо TinyMCE), хотя могу написать свой (я open_wysiwyg немного изменил, конечно)... Та же история с Gray Box - использую с удовольствием - очень красиво получается... Или например не понравился мне PEAR::RSS - я его не использую - написал свой функционал для работы с RSS - всё просто :) Поэтому, - напишите лучше - пришлите мне по почте - я вам скажу оргомное спасибо ;-)

не напишите - уволю ))))

ну это шутка, как вы понимаете.

[Удален]
#26

сори многа буков не в настроении столько читать :(

просто понял, что вариант вам не слишком подошел)

уволить да, я бы многих знакомых уволил с их многих работ. :)

[Удален]
#27
bearman:
сори многа буков не в настроении столько читать :(

просто понял, что вариант вам не слишком подошел)

уволить да, я бы многих знакомых уволил с их многих работ. :)

Прально :) Всех под снос!!! :) начальнег должен быть жОсским!!!! : )))))

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий