gormarket

gormarket
Рейтинг
47
Регистрация
29.12.2010

В левой части Вы можете проверить только то, что до знака ?, т.е.

RewriteRule работает в вашем случае только с page.php, да и здесь желательно заэкранировать точку, поскольку в левой части находится регулярное выражение, а в нем точка означает "любой символ"

А вот чтобы проверить то что после знака ? (строку запроса), нужно это делать в условии RewriteCond и используя переменную %{QUERY_STRING}

для RewriteCond уже в правой части регулярное выражение стоит, и в нем можно использовать соответствующие спецсимволы регулярок (^ - начало строки, $ - конец строки и т.д.)

Т.е. для вашего примера должно быть примерно так

RewriteCond %{QUERY_STRING} ^10$

RewriteRule ^page\.php$ index.php?newsid=5 [L]

А вообще применение RewriteRule это довольно сложное занятие, много тонкостей в этом есть

Поищите в поисковиках такое "RewriteRule htaccess", почитайте

регулярные выражения perl

Для разнообразия последнее слово можете заменить на PHP или javascript

qvaro:
Был сайт на народе, его у меня прикрыли. Могу ли я сейчас перенапрвлять ссылки на другой сайт?

Ссылки можно перенаправить только с доступного Вам сайта.

Если у Вас его прикрыли, где Вы намерены размещать редирект?

Ragnarok, кажется такой вариант решит все Ваши вопросы

preg_match_all('#<img[^>]+src\s*=\s*(["\'])([^\s"\']+)\\1#im',$content,$imgurls);

print '<pre>';

print_r($imgurls[2]);

print '</pre>';

iCospi, используйте для формирования даты (путем сложения/вычитания единиц времени, например дней , часов, минут и т.д.) функцию mktime

Кстати на странице по этой ссылке вверху есть ссылка на "Функции для работы с датой и временем".

Посмотрите.

looner, поищите в сети скрипт maxheight.js

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

Ink-developer,

попробуйте такой вариант

preg_match_all('#(^|\n).*(\n|$)#m',$file,$match);

print '<pre>';

print_r($match[0]);

print '</pre>';

фактически это получается преобразование содержимого переменной $file в массив строк

функция preg_match вернет только первую строку.

Может проще воспользоваться функцией чтения из файла file ?

Она сразу возвращает массив строк.

if (preg_match('#Apos|Rakos|Azuli|Undafisa#im',$rey[0])) {$strana = 'Испания';}

//здесь получаете массив строк с URL, я беру из строки, Вы можете читать в $arr_text прямо из файла функцией file

$text='

http://yandex.ru/543

http://yandex.ru/t54rt5

http://google.com/123

http://yandex.ru/t534r5t

http://yandex.ru/е54ке

';

$text=preg_replace('#'.chr(13).'#m',chr(10),$text);

$arr_text=preg_split('#'.chr(10).'+#m',$text);

//Здесь делается группировка адресов по домену

$arrDomens=array();

foreach ($arr_text as $value){

if(preg_match('#http://([a-z0-9.-]+)#',$value,$match)){

if(!isset($arrDomens[$match[1]])){

$arrDomens[$match[1]]=array();

}

array_push($arrDomens[$match[1]],$value);

}

}

$arr_d=array_keys($arrDomens);

$num_file=0;

// здесь делается вывод в файлы адресов с уникальными доменами

do {

$n=0;

$str_file='';

foreach ($arr_d as $value){

if(isset($arrDomens[$value][$num_file])){

//если будете сохранять в файле, можете добавлять в конец не '<br />', а допустим chr(13).chr(10)

$str_file.=$arrDomens[$value][$num_file].'<br />';

++$n;

}

}

if($n){

++$num_file;

//здесь вместо вывода на экран можете сохранить в файл, используя в его имени $num_file

print 'файл номер '.$num_file.'<br />';

print $str_file;

print '<br />';

}

} while ($n>0);

Результат получается такой

файл номер 1

http://yandex.ru/543

http://google.com/123

файл номер 2

http://yandex.ru/t54rt5

файл номер 3

http://yandex.ru/t534r5t

файл номер 4

http://yandex.ru/е54ке

использование сложных реврайтов это обычно танец с бубном :)

Нет возможности проводить эксперименты с поддоменами,

тестировал на модели подобного реврайта, и обнаружил что при наличии

предпоследней строки типа

RewriteCond $1 \.php$

значение %1 записывается пустым (значением city_link получается пустая строка),

но если поднять эту строку чуть выше, то все ОК

(только не спрашиваете меня почему !)

Пробуйте такой вариант, может сработать

RewriteCond %{HTTP_HOST} !^www.

RewriteCond $1 \.php$

RewriteCond %{HTTP_HOST} ^([a-z-]+).site.ru

RewriteRule (.*) city.php?city_link=%1 [L]

Всего: 437