tristram
Guest
обсуждение способов редиректа ^.*$ на srv.php
www.site.com/content/31337 значительпо проще запомнить чем например www.site.com/index.php?mod=content&id=31337, таким примеров горы!
начну с того что для этого надо прописать
RewriteEngine On
RewriteRule ^.*$ srv.php?$1
в .htaccess.
таким образом ВСЕ http-запросы будут перенаправлены в srv.php, а он в свою очеред будет анализировать $REQUEST_URI.
может быть было бы логичнее прописать правила прямо в .htaccess, и не прибегать к помощи php в данном случаи, т.к запуск скрипта это тоже кушает ресурсов, хоть и мало.
рассмотрим случай с srv.php:
во-первых нам надо создать массив $redirect вида
[0]=>array(pattern,url,redirect),
[1]=>array(pattern,url,redirect),
где pattern это регулярное выражение, а url это линк куда будет перенаправлен юзер если регулярное выражение удоволетворяет запросу, а redirect это булеан, если true, то будет header("location: url");, это актуально при ридеректе со старых ссылок (например при смене движка), а если false, то будет прочтено содержание файла и выдано юзеру. также должен отметить что если расширение параметра redirect будет php|php3|shtml то будет не чтение а include.
-~{}~ 05.07.04 02:51:
пиши в .htaccess:
затем создавай srv.php и пиши туда:
не стану описавать то что можно получать $redirect из базы, написать админовку управления редиректами, и т.д.
еще есть траблы с редиректами картинок, но и они решаемы простым регулярным вырожением.
www.site.com/content/31337 значительпо проще запомнить чем например www.site.com/index.php?mod=content&id=31337, таким примеров горы!
начну с того что для этого надо прописать
RewriteEngine On
RewriteRule ^.*$ srv.php?$1
в .htaccess.
таким образом ВСЕ http-запросы будут перенаправлены в srv.php, а он в свою очеред будет анализировать $REQUEST_URI.
может быть было бы логичнее прописать правила прямо в .htaccess, и не прибегать к помощи php в данном случаи, т.к запуск скрипта это тоже кушает ресурсов, хоть и мало.
рассмотрим случай с srv.php:
во-первых нам надо создать массив $redirect вида
[0]=>array(pattern,url,redirect),
[1]=>array(pattern,url,redirect),
где pattern это регулярное выражение, а url это линк куда будет перенаправлен юзер если регулярное выражение удоволетворяет запросу, а redirect это булеан, если true, то будет header("location: url");, это актуально при ридеректе со старых ссылок (например при смене движка), а если false, то будет прочтено содержание файла и выдано юзеру. также должен отметить что если расширение параметра redirect будет php|php3|shtml то будет не чтение а include.
-~{}~ 05.07.04 02:51:
пиши в .htaccess:
PHP:
RewriteEngine On
RewriteRule ^.*$ srv.php?$1
PHP:
<?php
$redirect = array(
array("/www","http://ccteam.ru",true),
array("^/","index.php",false)
);
$phpext = array("php","php3","shtml");
foreach($redirect as $unit)
{
if (ereg($unit[0],$REQUEST_URI))
{
$url = ereg_replace($unit[0],$unit[1],$REQUEST_URI);
if($unit[2])
{
header("location: ".$url);
}
else
{
$ext = explode(".",$unit[1]);
$b = count($ext)-1;
$ext = $ext[$b];
if (in_array($ext,$phpext))
{
@include(str_replace("//","",$unit[1]));
}
else {@readfile(str_replace(":","",$unit[1]));}
}
break;
}
}
?>
еще есть траблы с редиректами картинок, но и они решаемы простым регулярным вырожением.