WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   UrlRewriter.Net - erfarenheter? (https://www.wn.se/forum/showthread.php?t=1042201)

peterbf 2010-05-24 17:32

UrlRewriter.Net - erfarenheter?
 
Tjänare!

Hoppas allt är kung med er!


Jag har precis fått igång UrlRewriter.Net och lyckats testa med följande kod i Web.Config.

<rewriter>
<rewrite url="~/shop/clothes" to="~/Bank/BuyClothes.aspx" />
<rewrite url="~/shop/themes" to="~/Bank/BuyThemes.aspx" />
</rewriter>

Har nån några erfarenheter hur man använder QueryStrings för Id'n?

Idag har jag en massa URL'er som ser ut såhär:

www.sajten.com/bank/details.aspx?id=1

Ovanstående länk kan presentera Bill Clinton. Jag vill att den ska se ut:

www.sajten.com/bank/bill-clinton

Nån som har gjort nåt liknande förr?

Ciao!

fabian 2010-05-24 17:44

Jag har inte testat UrlRewriter.Net, men jag körde ISAPI_Rewrite förr och var mycket nöjd med det. Kan ju vara värt att kika på? Det är kompatibelt med modrewrite, och man skriver reglerna på samma sätt vilket gör att det är grymt lätt att hitta bra exempel mm. på nätet.

http://www.helicontech.com/isapi_rewrite/

StefanBergfeldt 2010-05-27 12:39

Du kan inte lista ut att Bill Clinton har Id=1

Du får antingen använda URLer som www.sajten.com/bank/bill-clinton-1 och hämta ut ettan och skicka vidare, annars får du skicka med "bill-clinton till http://www.sajten.com/bank/details.a...e=bill-clinton

Så här kan det se ut:
<add name="LangWQS" virtualUrl="([a-zA-Z\-]{2,5})/([a-zA-Z\-/_\d]+).aspx\?(.+)$" rewriteUrlParameter="IncludeQueryStringForRewrite" destinationUrl="/$2.aspx?$3" ignoreCase="true" />

tartareandesire 2010-05-27 13:01

Citat:

Ursprungligen postat av StefanBergfeldt (Inlägg 20356966)
Du kan inte lista ut att Bill Clinton har Id=1

Du får antingen använda URLer som www.sajten.com/bank/bill-clinton-1 och hämta ut ettan och skicka vidare, annars får du skicka med "bill-clinton till http://www.sajten.com/bank/details.a...e=bill-clinton

Så här kan det se ut:
<add name="LangWQS" virtualUrl="([a-zA-Z\-]{2,5})/([a-zA-Z\-/_\d]+).aspx\?(.+)$" rewriteUrlParameter="IncludeQueryStringForRewrite" destinationUrl="/$2.aspx?$3" ignoreCase="true" />

Jag tycker det är snyggare att köra helt utan det vanliga siffer-id:t i url:er. Det ser bättre ut i länkar och för besökaren samt att url:erna blir lite kortare, särskilt om man har många sidor / höga id-nummer.

fabian 2010-05-27 13:13

Jag skulle sätta en unik slug på varje sida, i detta fallet "bill-clinton" och sedan hämta den sida i databasen som har "bill-clinton" som slug. Likaväl som att du hämtar baserat på id kan du ju hämta sida baserat på slug.

StefanBergfeldt 2010-05-27 14:44

Att köra på Id har sina fördelar (även om det är snyggast utan)

1. Du behöver inte säkerställa att slug:en är unik, utan du har ett autonumber att förlita dig på
2. Att göra urval på Integer är snabbare än att göra det på text/varchar

Annars håller jag med om att det är snyggare utan siffrorna

tartareandesire 2010-05-27 17:18

Citat:

Ursprungligen postat av StefanBergfeldt (Inlägg 20356993)
Att köra på Id har sina fördelar (även om det är snyggast utan)

1. Du behöver inte säkerställa att slug:en är unik, utan du har ett autonumber att förlita dig på
2. Att göra urval på Integer är snabbare än att göra det på text/varchar

Annars håller jag med om att det är snyggare utan siffrorna

1. Det är ju ett icke-problem som oftast bara är en fördel

2. Såvida man inte har extremt många sidor så är det ingenting som besökaren märker av

Bjorne 2010-05-28 09:50

Citat:

Ursprungligen postat av StefanBergfeldt (Inlägg 20356993)
Att köra på Id har sina fördelar (även om det är snyggast utan)

2. Att göra urval på Integer är snabbare än att göra det på text/varchar

Annars håller jag med om att det är snyggare utan siffrorna

Hemligheten är att man sätter ett index på slug-kolumnen. Då går det exakt lika snabbt som om man använder en integer. Dock kräver det ju att koden är skriven så från början. Man kan inte bara slänga på rewrite rules och få till det.

StefanBergfeldt 2010-05-28 10:44

Bjorne, är du säker på det? Självklart är det bra (nödvändigt) med index, men är du säker på att det blir lika snabbt som index på en integer?

fabian 2010-05-28 11:36

Citat:

Ursprungligen postat av StefanBergfeldt (Inlägg 20357110)
Bjorne, är du säker på det? Självklart är det bra (nödvändigt) med index, men är du säker på att det blir lika snabbt som index på en integer?

Jag tror man skall ha en rätt saftig databas för att det skall räknas.

Testade att göra sökningar i en databas jag har. Ingen av sökningarna var cachad innan.

Att söka på slug tog 0.0008 sekunder.
Att söka på int tog 0.0007 sekunder.

Nu har jag iof bara ca 250 000 rader i databasen, men i den storleken gjorde det alltså mycket liten skillnad. Både int och slug är indexerade.

tartareandesire 2010-05-28 11:43

Citat:

Ursprungligen postat av StefanBergfeldt (Inlägg 20357110)
Bjorne, är du säker på det? Självklart är det bra (nödvändigt) med index, men är du säker på att det blir lika snabbt som index på en integer?

Det är ju lätt att testa? :) Skillnaden är extremt liten och gör ingen som helst skillnad för besökaren såvida man inte har enorma tabeller med ett antal miljoner rader.

tartareandesire 2010-05-28 11:51

Citat:

Ursprungligen postat av fabian (Inlägg 20357120)
Jag tror man skall ha en rätt saftig databas för att det skall räknas.

Testade att göra sökningar i en databas jag har. Ingen av sökningarna var cachad innan.

Att söka på slug tog 0.0008 sekunder.
Att söka på int tog 0.0007 sekunder.

Nu har jag iof bara ca 250 000 rader i databasen, men i den storleken gjorde det alltså mycket liten skillnad. Både int och slug är indexerade.

Det stämmer som du säger men att bara göra en sökning säger ingenting. Samma sökning en millisekund senare kan ta tre gånger så lång tid om man har otur.

StefanBergfeldt 2010-05-28 12:58

Ah, men liten skillnad gör det alltså ;)
Dock tillräckligt liten för att det ska vara värt att undvika Id i URLer

Kimpo 2010-05-30 17:17

Själv har jag kört en cachad Dictionary <slug, id> för att slå upp slugs mot id:n, vet ej om det är optimalt men har gått väldigt snabbt och fungerat bra. Pratar ni om en indexerad tabell med slugs eller eller vanlig strängmatchnings query mot post tabellen där slugkolumnen finns?

dAEk 2010-08-27 19:58

Är man inte låst till .NET 2.0 eller äldre verkar aspnet35routing bättre. Har vi någon som har testat det och i så fall: vad tycker ni är bra resp. mindre bra?
Jag kör med det i senaste projektet och hittills har det fungerat bra! Framförallt gillar jag att man kan använda alias för ens regler så att man slipper hårdkodade sökvägar här och där. En annan fördel är att sidnamnen inte läggs till i URL:n vid postbacks, något som UrlRewriter tenderar att göra.


Alla tider är GMT +2. Klockan är nu 23:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson