Rewrite URL na IIS 7

Želim da mi se npr.

bilo-sto-je-ovdje_2_123.aspx

prebaci u: clanak.aspx?clanak=123

s time da je 2 fiksno, 123 je parametar dok je “bilo-sto-je-ovdje” bilo koji tekst.

U web.config sam stavio ovo:

 <rewrite>
 <rules>
    <rule name="Rewrite to clanak.aspx">
      <match url="^_2_([0-9]+).aspx" />
      <action type="Rewrite" url="clanak.aspx?clanak={R:1}" />
    </rule>
</rules>
</rewrite> 

… ali naravno da ne radi.

Gdje griješim, što još treba staviti?

P.S. Znam za ovo
http://learn.iis.net/page.aspx/734/url-rewrite-module/
ali ako je meni išta jasno :frowning:

Prvi dio prije prve podlake si zaboravio specificirati.

Regularni izraz kaže da se pravilo odnosi na URL-ove oblika:

http://localhost/_2_123.aspx

Da bi se odnosilo na URL-ove oblika:

http://localhost/blablayadayada_2_123.aspx

treba reg. izraz biti nešto u smislu:

^[^_]+2([0-9]+).aspx

Dakle, “jedan ili više znakova koji nisu podvlaka”, potom podvlaka, onda “2”, onda podvlaka, onda “jedna ili više znamenki”.

Inače, pretpostavljam da bi moralo raditi i nešto oblika:

.+2([0-9]+).aspx$

Ovo mu kaže “jedan ili više bilo čega”, pa podvlaka, pa “2”, itd, ali zahtijeva da to bude na samom kraju ulaznog međuspremnika. Tako ona “jedan ili više bilo čega” ne “pojede” i “podvalaka, pa 2, itd.”. No, to ovisi o tome kako se radi generirani automat - nisam siguran da li će stvarno upaliti. A i onemogućuje upotrebu query stringa, tj. trebali bi proširiti stvar i za query string.

Nikada nisam vidio RW za IIS 7 ali pretpostavljam da ti treba

([_0-9a-z-]+) za dio “bilo-sto-je-ovdje”

i onda umjesto R:1 -> R:2

Vidim da su me pretekli :slight_smile:

:klanjamse

Pipsovo rješenje radi od prve, tseregovo isto radi samo trebaju zagrade

^b[/b]2([0-9]+).aspx

I da, obavezno

Điiiiiiihaaaaaa!

Zagrade ti trebaju ako želiš koristiti R:2.

Ako koristiš R:1 ne bi smjele biti potrebne. Operater “+” je snažniji od konkatenacije.

Istina, provjerio sam i stvarno radi i bez zagrada ali sa R:1.

Apćiiiihaaaa! :slight_smile:

Grunf bi rekao: Bolje imati dva rješenja koja rade nego 5 koja ne rade. :slight_smile:

Grunf je mudrac.

U ePipsovom ti isto ne trebaju zagrade, samo koristi R:1.

Probaj u ovom rješenju koje sam ti ja dao što se dešava ako je URL:

http://localhost/nesto/negdje_2_123.aspx

Dakle, ključ je da bude poddirektorij. Hoće li ^[^_] progutati cijeli “nesto/negdje” ili IIS rastavlja poddirektorije prije primjene rewritea.

Također probaj i za ove URL-ove:

http://localhost/nesto.aspx?q=negdje_2_123.aspx

http://localhost/nesto_2_123.aspx?q=negdje_2_456.aspx

http://localhost/nesto_2_123.aspx_2_456.aspx

http://localhost/nesto#_2_123.aspx

Sve slična logika.

Onda probaj ovaj URL u mom i ePipsovom rješenju:

http://localhost/n%65sto_2_123.aspx
- ovdje je "e" "escapean".

http://localhost/nesto negdje_2_123.aspx
- uoči razmak između "nesto" i "negdje"

http://localhost/nesto%20negdje_2_123.aspx
- ovdje je razmak escapean

http://localhost/nesto+negdje_2_123.aspx

http://localhost/nesto(negdje)_2_123.aspx