regex+mod_rewrite ....

20 отговора 342 прегледа
#1

regex+mod_rewrite ....

sorry za malko offtopic ... ama polovin den sedia i se opitvam da preboria slednoto neshto
kogato se otiva kum [линк] da se izpalniava [линк]

do tuk, (sled rovene i chetene) rodih slednoto neshto:
RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|swf)$
RewriteRule ^(.*).*/(.*)(/)?$ script.php?name=$1

ne me pitaite zashto kade kakvo i shto, che i az ne razbiram, no kato rezultat ot onia redove e, vsichko si baca, no ne i kogato ima trailing slash, niakoi moje li da dade idea kakvo triabva da se napravi s tui? A i, ako niakoi moje da preporucha niakakvi materiali za regex shte mu buda blagodaren (v biri sushto), che tezi neshta poveche ne biva da budat ignorirani.

-----------------------
гърбавия ковчег ще го изправи
Отговор
в отговор на Дpeмeщ #2

Re: regex+mod_rewrite ....

Ами тъка има пример точно като твоя : [линк]

Редактирано от Flexer на

Отговор
в отговор на Дpeмeщ #3

Re: regex+mod_rewrite ....

ами лично аз чета за regex от хелповете на микрософт (в тоя клуб тва звучи май като порно)....не съм велик спец обаче....
perl би трябвало да е най напрад с regex така че по тази логика на сайта на perl би трябвало да има доста материали...

я кажи какво е trailing slash ? (не ми се смейте...много)
и по каква логика си сложил този ред
RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|swf)$

щото и аз на едно място - photo.cult.bg искам да добавя подобно условие...
заявка от типа photo.cult.bg/~torbalan да се конвертира до photo.cult.bg/script.php?usr=torbalan

аз след четене и ровене по дебелите книги стигнах до:

RewriteRule ^/photo.cult.bg/~(.*) [линк]

[линк]
Отговор
в отговор на Flexer #4

Re: regex+mod_rewrite ....

problema mi e che pri men se trugva ot roota na server

seldvaiki tiahnata idea napisah
RewriteRule ^(.*) script.php?name=$1

v rezultat na koeto poluchih che name mi e ravno na script.php

-----------------------
гърбавия ковчег ще го изправи
Отговор
в отговор на Topбaлaн #5

Re: regex+mod_rewrite ....

ti si dobre kat znaesh pone na koi domain shte ti bude polzvano tova chudo, a az kato neznam koi ot niakolko desetki useri shte mi poiska da polzva tozi modul triabva da izmisliam neshto po universalno.

trailing slash "/" nakraia

a onova Cond .. da ne mi zakacha file-ove koito s onova razshirenie. ... pone az taka mislia che triabva da bude .. ma znam li ...

-----------------------
гърбавия ковчег ще го изправи
Отговор
в отговор на Дpeмeщ #6

Re: regex+mod_rewrite ....

(.*)/(.*) $1/script.php?param=$2

изглежда ми правдоподобно....но нямам възможност да го пробвам...

(.*) това означава всичко
очаквам в $1 да е частта от адреса до първото / а в две останалото....

[линк]
Отговор
в отговор на Topбaлaн #7

Re: regex+mod_rewrite ....

[линк] - not found
[линк] - timeout

-----------------------
гърбавия ковчег ще го изправи
Отговор
в отговор на Дpeмeщ #8

Re: regex+mod_rewrite ....

^/(.*)/(.*)/{*} $1/script.php?param=$2

а това ?

всъщност как изглежда заявката

GET /alabala......
или
GET [линк]......
ако е като горното мисля, че това трябва да върши работа...поне така ми изглежда...
ама то май и за предното така си мислех....))

я ако имаш ICQ се обади - 44441095

[линк]

Редактирано от Topбaлaн на

Отговор
в отговор на Дpeмeщ #9

Re: regex+mod_rewrite ....

Хмм, предполагам че спецовете по regex доста ще ми се смеят, но аз бих решил проблема по следния начин:
1. Ще си сложа един ErrorDocument /404.php например
2. Във файла 404.php вече всичко си е под твоя контрол - виждаш какъв адрес са търсили, проверяваш дали има такъв фолдер и ако искаш го пращаш натам....

Плюса на този метод е, че ако /folder наистина съществува няма да запратиш потребителя към script.php?name=folder
Освен това съм чувал, че mod_rewrite много товарел сървъра....

E, ако случая ти е по-сложничък, предполагам, че това няма да ти свърши работа....

Отговор
в отговор на toranaga #10

здесь случай разные бывают...

понякога може, понякога не...

мен също ме интересува как ще стане с regexp (без да съм спец) защото искам да ползвам същото нещо за мои цели...
а по медода, който описваш при мен хич не става...

[линк]
Отговор
в отговор на Topбaлaн #11

Re: здесь случай разные бывают...

Ами в интерес на истината аз не съм го описал подробно, а само посочил принципа....

в конфигурационния файл на апаче (или евентуално в .htaccess) трябва да се напише:
ErrorDocument 404 /path-to-file/error404handler.php
където error404handler.php ти е името на файла, който поема заявката в случай, че сървъра върне код 404. В него като рагледаме променливата $_SERVER[REQUEST_URI] ще получим че потребителят е искал да отвори примерно адреса /personalfolder
Тогава вече си го прехвръляме където искаме, като хубавото е че можем да проверим дали personalfolder съществува преди това....

Принципно си прав за това че е хубаво да се знае как става с regex, ама лично аз по-комфортно бих се чуствал да управлявам всичките тия редиректи с PHP. А мисля, че и за сървъра ще е по-добре...

Отговор
в отговор на toranaga #12

Re: regex+mod_rewrite ....

i error log da ti se uvelichava s niakolko hiliadi reda v chas ........

-----------------------
гърбавия ковчег ще го изправи
Отговор
в отговор на Дpeмeщ #13

Re: regex+mod_rewrite ....

interesnoto e che vapreki vsiakava logika (chetena ot niakolko razlichni choveka ot manual) niakoi neshta ili se duniat ili ne rabotiat... mai mu e vremeto na apache da stane commercial ta da mu opraviat bugovete (pisna mi ot OSF i GPL hlapeshtini)

-----------------------
гърбавия ковчег ще го изправи
Отговор
в отговор на toranaga #14

Re: здесь случай разные бывают...

бе не съм убеден за сървъра
склонен съм да споря, въпреки че нито regex разбирам (както е видно от опитие, които правя по горе) нито пък на РНР съм цар

навсякъде, където пише за redirect има примери и за двата метода, което ще рече че нито единия има явно предмиство нито другия...

но ми се струва, че да се отвори страница, да се изпълни скрипт и тогава да се ходи на друга страница е по-натоварващо отколкото да се пренапише пътя.....ама кой знае?

[линк]
Отговор
в отговор на Дpeмeщ #15

ТЦ НЕ СИ ПРАВ

апачито си работи, и логиката е здрава!
това се ползва от много хора на много места
просто не можем да налучкаме верния синтаксис.....

[линк]
Отговор
в отговор на toranaga #16

Re: regex+mod_rewrite ....

По този начин ще правиш външен redirection, а на Дремещ му трябва вътрешен.

Great minds discuss ideas;
Average minds discuss events;
Small minds discuss people.
Отговор
в отговор на Дpeмeщ #17

Re: regex+mod_rewrite ....

Няма да е лошо от Дир.бг да направят един редирект за клубовете като clubs.dir.bg/PHP да редиректва към [линк]

---------------
CutePHP.com
Отговор
в отговор на Flexer #18

Re: regex+mod_rewrite ....

togava shte triabva da stane clubs.dir.bg/computers/php

-----------------------
гърбавия ковчег ще го изправи
Отговор
в отговор на Дpeмeщ #19

Re: regex+mod_rewrite ....

vij dali ne ti vyrshi rabota:

RewriteRule /sites/[линк][a-z]+)$ [линк]

Отговор
в отговор на foo1 #20

Re: regex+mod_rewrite ....

za sajalenie ne moga da go vurja kum domain name

-----------------------
гърбавия ковчег ще го изправи
Отговор