PDA

Pogčedajte punu verziju : mod_rewrite: kako saznati izvorni url ?


ivanhoe
27. 12. 2006., 12:06
Pravim neki plugin za redirektovanje stranica pod wordpressom, a koristi se mod_rewrite na serveru da bi urlovi bili lepi. To mi stvara problem jer kad moj plugin bude pozvan mod_rewrite je vec izmenio url i ja ne mogu da ga matchujem.

jel ima neko ideju kako da se u php skripti sazna kako je glasio ne-rewriteovani URL, znaci onaj lepo formatirani koji je kucan u browser, jer ovaj rewrite-ovani mi ne radi posao?

zextra
27. 12. 2006., 12:42
Nista mi ne pada na pamet, osim da setujes ENV varijablu sa sadrzajem originalnog url-a, ali nisam siguran da mozes da procitas env var kad je php pokrenut kroz mod_php.

'env|E=VAR:VAL' (set environment variable)
This forces an environment variable named VAR to be set to the value VAL, where VAL can contain regexp backreferences $N and %N which will be expanded. You can use this flag more than once to set more than one variable. The variables can be later dereferenced in many situations, but usually from within XSSI (via <!--#echo var="VAR"-->) or CGI (e.g. $ENV{'VAR'}). Additionally you can dereference it in a following RewriteCond pattern via %{ENV:VAR}. Use this to strip but remember information from URLs.

bluesman
27. 12. 2006., 12:51
Nisam siguran da li sam te razumeo dobro, ali obicno mozes da vidis tako sto pogledas koje su varijable u $_GET, pa pogledas $_SERVER['PHP_SELF'] pa jos neke $_SERVER varijable, pa od toga mozes da sklopis tacan url ako ga ne znas. Mada iskreno ne razumem situaciju koju si opisao.

jablan
27. 12. 2006., 13:31
da setujes ENV varijablu sa sadrzajem originalnog url-a
Ili da originalni URL upakuješ u request parametar.

bojan_bozovic
27. 12. 2006., 14:10
$uri=$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"];

EDIT: query_string ne sadrzi "?".

cvele
27. 12. 2006., 14:30
clean install wordpressa nema ukljucen mod_rewrite, sto znaci da je njihova fja sposobna da sastavi url i bez mod_rewrite...

dakle pogledas njihovu fju i napravis duplikat koji ces modifikovati tako da ti daje forced normalne urlove... ili jos bolje nadjes sta u toj fji trigeruje da ona vraca clean urlove i ti na silu sprecis da do toga dodje kada ti zatreba.

ivanhoe
27. 12. 2006., 15:24
Ovo sto Zextra i Jablan predlazu ima smisla, ali mi je malkice heavy, moracu iz plugina da menjam .htaccess

BTW, ajd malo da pojasnim, posto me izgleda pola ljudi nije skapiralo:

kad se ukuca url npr. nekisajt.com/articles/neki_post mod_rewrite to pretvori u nesto tipa /index.php?page=neki_post&neki=parametar&jos=jedan. Onda apache uradi interni redirekt i pozove index.php od wordpressa sa tim parametrima, a wordpress pozove moj plugin(obican php skript).

Nazalost, ako iz mog skripta gledam PHP_SELF, SERVER_NAME, QUERY_STRING i ostalo, sasvim logicno dobijam vrednosti za url kojim je pozvan php, a to je /index.php?page=neki_post&neki=parametar&jos=jedan koji je generisao mod_rewrite. Onaj prvi url (nekisajt.com/articles/neki_post) ne umem da iscitam.

E, a to je meni problem jer treba da se radi matchovanje uz upotrebu wild carda, covek hoce da kaze npr nekisajt.com/articles/misc/* i da time matchuje sve strane iz te kategorijea. Za to mi je neophodan lepo formatiran url..

EDIT: Alternativni pristup bi bio ovo sto Cvele kaze, da napravim logiku koja provaljuje trenutnu kategoriju iz baze, i njene parent kategorije, pa generise url, ali to me tek mrzi :)

bojan_bozovic
27. 12. 2006., 15:36
A ja imam jedno pitanje:


Jel' to mod_rewrite u modi? Ja ne vidim toliki razlog za njim, cak i SEO kad se uzme u obzir, tim pre sto ce biti glavobolja ako se prelazi na drugi webserver npr. IIS

cvele
27. 12. 2006., 15:56
a ja imam odgovor:

Koliko ti je ovo zgodno za recimo link ili copy/paste preko im:

http://www.amazon.com/s/?node=1036592&x=2&sort=salesrank&y=4&pct-off=20-70&hidden-keywords=-shoe%20-boot%20-charles&emi=ATVPDKIKX0DER


http://www.businesssolutionsmag.com/index.php?option=com_jambozine&layout=article&view=page&aid=2483&Itemid=27

http://www.ieee.org/portal/site/mainsite/menuitem.818c0c39e85ef176fb2275875bac26c8/index.jsp?&pName=corp_level1&path=about/documentation/copyright&file=privacy.xml&xsl=generic.xsl

http://www.processor.com/editorial/article.asp?article=articles%2Fp2848%2F30p48%2F30p 48.asp&guid=&searchtype=&WordList=&bJumpTo=True

http://estore.autodesk.com/dr/v2/ec_Main.Entry16?SP=10024&PN=51&xid=19515&V1=11033743&V2=11033743&V3=1&V5=&V4=10&S1=&S2=&S3=&S4=&S5=

cvele
27. 12. 2006., 15:57
btw SEO... veoma je zgodan mod_rewrite zbog cinjenice da mozes da punis url sa razlicitim kw

jablan
27. 12. 2006., 16:19
btw SEO... veoma je zgodan mod_rewrite zbog cinjenice da mozes da punis url sa razlicitim kw

Hm, ako ćemo pravo, za punjenje url-a svim i svačim ne treba ti mod_rewrite, niko ti ne brani da dodaš bilo šta kao suvišni get parametar nekog skripta...

http://www.devprotalk.com/showthread.php?p=26327&posted=1&dummy=kako_se_obogatiti_preko_noci

bojan_bozovic
27. 12. 2006., 19:10
Bas tako,koristis smislene get parametre. Korisnik ionako retko kuca link direktno u browser. Danas nema problema sa & u URL.

Br@nkoR
27. 12. 2006., 19:34
Nisam siguran da li sam dobro razumeo problem:

$_SERVER['REQUEST_URI']
$_SERVER['REDIRECT_URL']

ivanhoe
27. 12. 2006., 20:57
Branko imas veceru za ovaj REDIRECT_URL, to je to...:1042: