Помогите с RewriteRule разобраться

12
M
На сайте с 28.02.2006
Offline
236
878

Есть адрес такого вида

http://ххххххх.com/index.php?distr=2

http://ххххххх.com/index.php?distr=3

...... и т.д. Хочу привести их к виду

http://ххххххх.com/distr/2 и т.д.

Есть еще вот такие адреса

http://хххххх.com/search.php?Surn=Efimoff&Spec=Kinderarzt&Streat=Verfassungslinde&City=Bergisch&Ind=68004

содержат максимум 5 переменных. Их бы тоже не мешало как то выстроить по человечески. Но это уже другое дело, мне хотя бы с мелочью разобраться.

mihas добавил 24.05.2008 в 01:00

Совсем никаких вариантов?

Я делаю так

RewriteEngine On

RewriteRule ^([a-z]+)/$ index.php?distr=$1 [L]

И ни черта не работает почему то.

DC
На сайте с 08.09.2007
Offline
17
#1

попробуйте так


RewriteEngine On
RewriteRule ^distr/([^/]*)\.html$ /index.php?distr=$1 [L]
Чудеса случаются... это вам любой программист скажет... Скрипты (php, mysql, javascript и т.д.) любой сложности и вёрстка на заказ т.: +38(099)0569716, icq: 296874736
M
На сайте с 28.02.2006
Offline
236
#2

Dr.Canibal, спасибо, так почему то заработало :)

mihas добавил 24.05.2008 в 01:28

Ок, а если переменных 2, то такой способ уже не катит.

DC
На сайте с 08.09.2007
Offline
17
#3

в таком случае нужно делать несколько наборов правил

можно попробовать так


RewriteEngine On
RewriteRule ^distr/([^/]*)\.html$ /index.php?distr=$1 [L]
RewriteRule ^distr/([^/]*)/var2/([^/]*)\.html$ /index.php?distr=$1&var2=$2 [L]
M
На сайте с 28.02.2006
Offline
236
#4

А где же в этом правиле $1 и $2?

mihas добавил 24.05.2008 в 01:48

Так тоже работает, но совсем некрасиво. И еще проблема в том, что максимальное количество переменных 5, но может быть и 1 и 2 и 3, причем в любой комбинации. Поэтому наверное нужно какое то универсальное правило.

Shtogrin
На сайте с 02.11.2006
Offline
95
#5

Если бы в именах переменных и их значениях не встречался "-" или "_", то "/" можно было бы заменить на этот символ, а то получится 10 "/" в адресе.

#1-переменная distr

#distr/a -> /index.php?distr=a
RewriteRule ^distr/([^/]+)$ /index.php?distr=$1 [L]

#2-переменных - distr и любая
#distr/a/b/c -> /index.php?distr=a&b=c
RewriteRule ^distr/([^/]+)/([^/]+)/([^/]+)$ /index.php?distr=$1&$2=$3 [L]

#3-переменных - адрес distr/a/b/c/d/e получается уже очень длинным
#distr/a/b/c/d/e -> /index.php?distr=a&b=c&d=e
RewriteRule ^distr/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ /index.php?distr=$1&$2=$3&$4=$5 [L]

#и еще для 4 и 5
www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
M
На сайте с 28.02.2006
Offline
236
#6

Shtogrin, я так уже пробовал. Проблема в том, что не обязательно наличие всех переменных. Может быть, например, первая, вторая и пятая а третья и четвертая пустые. В таком случае ничего не работает.

malls
На сайте с 08.08.2005
Offline
255
#7
mihas:
Shtogrin, я так уже пробовал. Проблема в том, что не обязательно наличие всех переменных. Может быть, например, первая, вторая и пятая а третья и четвертая пустые. В таком случае ничего не работает.

Приведите пример того к чему надо привести конструкцию из нескольких переменных...

Т.е. как урл до реврайта должен при этом выглядеть?

cims
На сайте с 15.11.2005
Offline
60
#8

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

http://mod-rewrite-wizard.com/

СД
На сайте с 17.02.2008
Offline
20
#9
cims:
можно же визардом воспользоваться да посмотреть что он предлагает, не всегда концептно но тем не менее
http://mod-rewrite-wizard.com/

пасиба за линк, хороший мастер, думаю ТС тоже будет доволен

Деньги ... легко. () я плохой ребенак, люблю пиво и ненавижу даунов оставил хамский коммент и не подписался? Мог бы и не трудиться, на уродов не в обиде)
edogs software
На сайте с 15.12.2005
Offline
775
#10

mihas,

Или нечто вроде ^distr(/([^/]*)(/([^/]*)(/([^/]*)(/([^/]*))?)?)?)?$ index.php?$1=$2&$3=$4 , т.е. где (/([^/]*))? вкладывается, вкладывается и вкладывается.

Или (имхо более разумно и универсально) ^distr(.*)htm$ index.php?bla=$1 и потом этот $bla разворачивать уже на php, благо это трудностей не представляет.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
12

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