|
|
|
| Подскажите, как сделать url такого вида: /click?url=http://site.ru
из такого /index.php?mod=click&url=http://site.ru
Делаю так:
<?php
$in = array("'index.php\?mod=click&url=([0-9a-zA-Z_-]*)'");
$out = array("click?url=\\1");
preg_replace($in, $out, $url)
?>
|
Правило для .htaccess:
RewriteRule ^click?url=([0-9a-zA-Z_-]*)$ index.php?mod=click&url=$1
Не получается. | |
|
|
|
|
|
|
|
для: Ru
(31.10.2007 в 11:07)
| |
<?php
$url="index.php?mod=click&url=www.site.ru";
$in = "|index.php\?mod=click&url=([0-9a-zA-Z\._-]*)|";
$out = "click?url=\\1";
print preg_replace($in, $out, $url);
?>
|
| |
|
|
|
|
|
|
|
для: Faraon
(31.10.2007 в 11:32)
| | >
><?php
>$url="index.php?mod=click&url=www.site.ru";
>$in = "|index.php?mod=click&url=([0-9a-zA-Z._-]*)|";
>$out = "click?url=\1";
>print preg_replace($in, $out, $url);
>?>
>
|
Преобразование работает, но что-то не работает правило для .htaccess:
RewriteRule ^click?url=([0-9a-zA-Z\._-]*)$ index.php?mod=click&url=$1
|
Показывает 404 ошибку и не работает переадресация на сам сайт, в адресной строке так и остается http://site1.ru/click?url=http://site.ru
В этом виде переадресация работает http://site1.ru/index.php?mod=click&url=http://site.ru | |
|
|
|
|
|
|
|
для: Ru
(31.10.2007 в 12:05)
| |
RewriteRule ^click?url=([0-9a-zA-Z\._\-\:\/]*)$ index.php?mod=click&url=$1
|
| |
|
|
|
|
|
|
|
для: EXP
(31.10.2007 в 23:21)
| | Не работает.
Вот код:
index.php
<?php
ob_start();
function main() {
echo "<a href=\"index.php?mod=click&url=http://softtime.ru\" target=\"_blank\">Softtime</a>";
}
function click() {
$url = ($_GET['url']);
header("Location: ".$url."");
}
if ($_GET['mod'] == "click") {
click();
} else {
main();
}
function replace_text(&$url) {
$in = array("|index.php\?mod=click&url=([0-9a-zA-Z\._\-\:\/\/]*)|");
$out = array("click?url=\\1");
$url = preg_replace($in, $out, $url);
return $url;
}
$text = ob_get_contents();
ob_end_clean();
echo replace_text($text);
?>
|
.htaccess
RewriteEngine on
RewriteRule ^.htaccess$ - [F]
RewriteRule ^click?url=([0-9a-zA-Z\._\-\:\/]*)$ index.php?mod=click&url=$1
|
| |
|
|
|
|
|
|
|
для: Ru
(01.11.2007 в 13:41)
| | что-то я тоже не смог подружить модРеврайт с гет
можно проще сделать и так
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^click\/([0-9a-zA-Z\.\-]+?)\/?$ ?mod=click&url=$1
|
только наверное надо как-то ещё проверять что не должны подсунуть в $url
<?php
ob_start();
function main() {
echo "<a href=\"/click/softtime.ru\" target=\"_blank\">Softtime</a>";
}
function click() {
$url = 'http://' . $_GET['url'] ;
header("Location: ". $url );
}
if (@$_GET['mod'] == "click") {
click();
} else {
main();
}
ob_end_flush();
?>
|
не пойму для чего функция replace_text,
и у меня почемуто работает только с ob_end_flush(); | |
|
|
|
|
|
|
|
для: EXP
(01.11.2007 в 15:57)
| | Большое спасибо!
Значит так и сделаю. | |
|
|
|
|
|
|
|
для: Ru
(01.11.2007 в 16:36)
| | > RewriteRule ^click?url=([0-9a-zA-Z\._\-\:\/]*)$ index.php?mod=click&url=$1
Так писать нельзя. Это можно заменить на что-то вроде
RewriteCond %{QUERY_STRING} ^url=([0-9a-zA-Z._:/-]*)$
RewriteRule ^click$ index.php?mod=click&url=$1
|
| |
|
|
|
|
|
|
|
для: Unkind
(01.11.2007 в 17:03)
| | Спасибо заработало! | |
|
|
|