Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > Создание регекспа для vingrad.ru/VF-CPP-000002


Автор: Wowa 21.10.2004, 18:04
Требуется настроить mod_rewrite так, чтобы при заходе на сайт по этому адресу http://vingrad.ru/VF-CPP-000002
происходил редирект на forum.vingrad.ru/index.php?id=2

Т.е. отсекается все кроме цифр

Тут важно написать регексп как можно более точно, чтобы не было ложных срабатываний и нагрузка на сервер сильно не повышалась бы


Желательно, чтобы регексп мог различить также конструкцию типа: VF-CPP-lalala-000002


VF-CPP-000002 - это всего лишь пример! Буквы и цифры могут быть любые! Думаю надо копать в направлении(если идут в начале две или три буквы, а после с них стоит знак -, и все выражение заканчивается шестью(!) цифрами, то отсекаем ненужное и делаем редирект.

Автор: arial 21.10.2004, 20:17
Если отсекать только последние 6 цифр, то:
RewriteRule ([0-9]{6})$ index.php?a=$1 [L]

Автор: Wowa 22.10.2004, 02:20
Цитата(arial @ 21.10.2004, 19:17)
RewriteRule ([0-9]{6})$ index.php?a=$1 [L]
А как при этом будет увеличиваться нагрузка на сервер?
В принципе, можно было бы вообщк ничего не отсекать, а так передавать, только проблема в том, что на сайте есть куча нормальных файлов и я боюсь, если редирект будет тогда, когда не ждали :D

Автор: GoodBoy 22.10.2004, 11:22
Я так понял, что кроме цифр нам больше ничего и не нужно???

только обязательно в .htaccess первой строкой должно быть:
Код
RewriteEngine On

Только я не знаю как сделать редирект между разными доменами...

как вариант можно вот так:
Код
RewriteEngine On
RewriteRule  ([0-9]{6})$  redir.html?$1


а в файле redir.html прописать вот это:
Код
<meta http-equiv="Refresh" content="0; url=http://forum.vingrad.ru/index.php?id=<!--#echo var="QUERY_STRING" -->">


Проверил - вроде работает...

Автор: Wowa 22.10.2004, 11:44
Цитата(GoodBoy @ 22.10.2004, 10:22)
Я так понял, что кроме цифр нам больше ничего и не нужно???

Да, но оно и не может помешать тоже, т.к. пхп скрипт тогда сам отсечет. Самое главное, это очень четко различать, что нужно вызвать не просто файл, а сделать переадресацию, если в строка такого типа поступила.
Добавлено @ 11:45
Цитата(GoodBoy @ 22.10.2004, 10:22)
Только я не знаю как сделать редирект между разными доменами...

Я создал на хосте vingrad.ru просто Symbolic Link для файла index.php, который ссылается на форумовский файл.

Автор: GoodBoy 22.10.2004, 11:50
Тогда юзай мой метод!!! :-))))))) Можно только ещё вот так сделать:
Код
RewriteRule ^VF-[a-zA-Z-]+([0-9]+)$ redir.html?$1

тогда будет разпознаваться любая последовательность, начинающаяся с "VF-", после которой будет любое количество символов латинского алфавита и/или знаков "-", после которых будут стоять произвольное количество цифр.


Цитата(Admin @ 22.10.2004, 12:44)
Я создал на хосте vingrad.ru просто Symbolic Link для файла index.php, который ссылается на форумовский файл.

Ну так может и ещй проще!!! Но мой вариант с редиректом - тоже работает!

Автор: Wowa 22.10.2004, 12:20
Цитата(GoodBoy @ 22.10.2004, 10:50)
тогда будет разпознаваться любая последовательность, начинающаяся с "VF-", после которой будет любое количество символов латинского алфавита и/или знаков "-", после которых будут стоять произвольное количество цифр.

Весь фокус в том,что это не всегда начинается с VF. Начинаться может с любого сочитания символов.

Автор: GoodBoy 22.10.2004, 12:40
Цитата(Admin @ 22.10.2004, 13:20)
фокус в том,что это не всегда начинается с VF. Начинаться может с любого сочитания символов.

ну тогда вот так:
Код
RewriteRule ^[a-zA-Z-]+([0-9]+)$ redir.html?$1

Автор: korob2001 24.10.2004, 13:48
Цитата

Весь фокус в том,что это не всегда начинается с VF. Начинаться может с любого сочитания символов.

Символы могут быть как строчными, так и заглавными?

Автор: Wowa 24.10.2004, 16:30
Цитата(korob2001 @ 24.10.2004, 12:48)
Символы могут быть как строчными, так и заглавными?

да. Если это усложняет, то можно оставить только заглавные.

Автор: Cheba 24.10.2004, 16:53
Цитата(Admin @ 22.10.2004, 11:44)
Я создал на хосте vingrad.ru просто Symbolic Link для файла index.php, который ссылается на форумовский файл.
Файл ссылается? Или ссылка? Если первое, то это как? Если второе, то могут быть проблемы, так как в форуме жестко прописан домен, где работает форум.

Автор: GoodBoy 25.10.2004, 10:39
Цитата(Admin @ 24.10.2004, 17:30)

Цитата (korob2001 @ 24.10.2004, 12:48)
Символы могут быть как строчными, так и заглавными?


да. Если это усложняет, то можно оставить только заглавные.

А мой последний вариант не подходит?

Автор: Cepera 25.10.2004, 16:19
:) а средствами php не пойдет ?

Автор: Wowa 25.10.2004, 20:09
Цитата(Cepera @ 25.10.2004, 15:19)

а средствами php не пойдет ?

нет, весь фокус в том, что адрес должен быть короткий. вида: http://vingrad.ru/VF-CPP-000002
Добавлено @ 20:11
Цитата(Cheba @ 24.10.2004, 15:53)

Файл ссылается? Или ссылка? Если первое, то это как? Если второе, то могут быть проблемы, так как в форуме жестко прописан домен, где работает форум.


Ну в линуксе есть такое понятие Symbolic Link. Типа ярлыка в виндоусе. А проблем не будет думаю,т.к. я прохоже уже провернул с ссылками на профайлы участников форума.

Автор: Cepera 26.10.2004, 00:08
Цитата(Admin @ 25.10.2004, 21:09)
Цитата(Cepera @ 25.10.2004, 15:19)

а средствами php не пойдет ?

нет, весь фокус в том, что адрес должен быть короткий. вида: http://vingrad.ru/VF-CPP-000002

так положить index.php и обрабатывать все запросы ;)

как у меня домен http://www.webarama.com.au на одном файле крутится

Автор: Wowa 26.10.2004, 00:38
Cepera
Т.е. например, при переходе по этой ссылке: http://www.webarama.com.au/web-hosting/hosting-packages/email-package/

эти параметры сразу передаются index.php? Но ведь все равно для этого mod_rewrite используется?

Автор: Cepera 26.10.2004, 00:47
нет :)

Цитата
ErrorDocument 404 /index.php
ErrorDocument 403 /index.php
ErrorDocument 401 /index.php

Добавлено @ 00:48
ничего другого в хтаксесс нет :)

Автор: Wowa 26.10.2004, 00:52
ну мне не кажется это изящным решением :)
в mod_rewrite можно точно также регекспы обрабатывать, как в ПХП.

Автор: Cepera 26.10.2004, 00:56
а мне показалось самым удобным ;)
ведь тогда логгируются все некорректные запросы (404, 403, 500 etc)
Добавлено @ 00:56
(в бд, а не где-то в тхт-файл)
Добавлено @ 00:57
Володь, если решение потребуется - стучи в аську, написал ее ... к старой вернулся ;)

Автор: GoodBoy 26.10.2004, 11:22
Admin
Вот тебе последний вариант. Пропиши в .htaccess следующее:
Код
RewriteEngine    On
RewriteRule       ^[a-zA-Z-]+([0-9]+)$     http://forum.vingrad.ru/index.php?id=$1

правила перенаправления оказывается работают между доменами! :-)

Автор: Wowa 3.11.2004, 16:24
GoodBoy
Работает, но в конце всегда стоит 6 цифр. Может указать это, чтобы не было ложных срабатываний?

Автор: GoodBoy 3.11.2004, 16:52
Admin
тогда вот так:
Код
RewriteEngine   On
RewriteRule     ^[a-zA-Z-]+([0-9]{6})$     http://forum.vingrad.ru/index.php?id=$1


А если всё-же интересно что там было написано впереди, то можно вот так:

Код
RewriteEngine   On
RewriteRule     ^([a-zA-Z-]+)([0-9]{6})$     http://forum.vingrad.ru/index.php?id=$2&fl=$1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)