Avatar billede EveryMA Mester
14. december 2014 - 01:17 Der er 31 kommentarer og
1 løsning

Friendly URL med querystring

Hej.
Igennem eksperten.dk har jeg fået held med at gøre mit site mere brugervenligt og har derfor ændret alle urls til friendly urls.

Men jeg har et problem.
Jeg har et database-udtræk, hvor der er utrolig mange udtræk. Derfor har jeg opdelt det med 10 udtræk pr. side og dermed sideskift. Et link ser således ud:

siden.asp?page=12 (hvis det er side 12)

Men jeg har ikke held med at skabe en friendly url. Jeg har allerede én fil, som bruger querystring og som fungerer fint. Men når jeg forsøger med denne fil (som ligger i samme mappe), så dirigeres jeg videre til forsiden som om filen ikke findes HVIS jeg altså har forsøgt at skabe linket om til friendly url: domain.dk/siden/12/

Det er som om den ikke kan kapere to filer med querystring, som skal laves til brugervenlige urls.

Jeg har forsøgt at smide filen i en mappe, men problemet er det samme.

Nogen der måske har input, tips, tricks eller et svar?
Avatar billede EveryMA Mester
14. december 2014 - 19:35 #1
Al info er velkommen! :)
Avatar billede keysersoze Guru
14. december 2014 - 22:50 #2
Du bliver nødt til at komme med noget kode hvis du skal have hjælp.
Avatar billede EveryMA Mester
15. december 2014 - 00:49 #3
Der er intet kode. Jeg bruger programmet IIS til at rewrite adresserne fra fil.asp til bare "fil".
Avatar billede keysersoze Guru
15. december 2014 - 15:00 #4
Selv URL Rewrite i IIS består jo formentlig af en form for kode, nemlig Regex - og du kan også sætte flere regler op så at gætte på hvad du gør forkert i enten din rewrite eller i dine filer ud fra dine givne oplysninger er umuligt.
Avatar billede EveryMA Mester
15. december 2014 - 15:18 #5
Hm. Jeg kan faktisk ikke genkende det du henviser til.

hvis min fil er: domain.dk/fil.asp

Så kopierer jeg adressen, åbner IIS - Rewrite - Add rule - Friendly Url - og så kopierer jeg adressen op og så kommer programmet selv med forslag til hvad den brugervenlige adresse skal være.

Derefter trykker jeg ok, og linket vil fremover være domain.dk/fil

på intet tidspunkt dukker der kode op eller andet.
Avatar billede keysersoze Guru
15. december 2014 - 15:42 #6
Det er jo bare fordi IIS har gjort det let for dig - i sidste ende munder det ud i (blandt andet) et Pattern, som er Regex.

Du er nødt til at kigge på hvad dit Pattern og substitution url er - og i første omgang selvfølgelig om det er din rewrite der ikke bliver fanget (altså så din rewrite er forkert) eller om det måske er noget på selve siden.
Avatar billede EveryMA Mester
15. december 2014 - 16:27 #7
Altså den viser jo f.eks. : {C:1}

som er fil.asp/{C:1}

C er så f.eks. "page" og 1 er den første querystring i url'en.

Men det undrer mig at den fungerede første gang jeg gjorde det med querystring i adressenavnet, men anden gang gider den ikke
Avatar billede keysersoze Guru
15. december 2014 - 16:59 #8
Nej - C står for condition pattern og R for rule pattern mens tallet svarer til henvisningen i det "array" værdierne ligger i.

Igen uden at vide hvad du har sat op kunne en regel være pattern ^siden/([^/]+)/?$ hvilket svarer til at du kan kalde /siden/12/ og blive henvist til siden.asp?page=12.
Avatar billede EveryMA Mester
15. december 2014 - 17:21 #9
Jeg har denne pattern:

^siden/([^/]+)/?$

det normale link er : siden.asp?page=2 (f.eks.)

Men når jeg trykker på det normale link eller det brugervenlige link, så findes siden ikke. Selvom den har omdøbet urlen til siden/2/ fremfor siden.asp?page=2
Avatar billede keysersoze Guru
15. december 2014 - 17:55 #10
altså 404? Eller som du skrev i spørgsmål til forsiden? Husk på at rækkefølgen af dine regler også har noget at sige.
Avatar billede EveryMA Mester
15. december 2014 - 18:21 #11
Jeg er ikke så teknisk lige på det område, men jeg lavede for tid tilbage en 404 eller 301 redirect, så hvis siden ikke findes, går den tilbage til forsiden. Det er det, som der sker her :)
Avatar billede EveryMA Mester
15. december 2014 - 18:24 #12
.....og det undrer mig i og med at selve siden findes.

Jeg kan sagtens gå til domain.dk/siden og se siden. Men lige så snart jeg trykker så den skal skifte side (siden.asp?page=x) så hopper den tilbage til forsiden.
Avatar billede keysersoze Guru
15. december 2014 - 21:22 #13
Det er også svært at komme med input stort set uden at kende til dit setup eller regler - hvis du ikke kan forklare hvad du har sat op så må du jo tage et screenshot og dele med os.

Men hvis du har en regel der redirecter til en 404 og du først derefter laver en regel til at fange "siden" vil 404 have prioritet over "siden" og så må du ændre rækkefølgen.
Avatar billede EveryMA Mester
15. december 2014 - 22:39 #14
Jeg forstår. Men omvendt giver det vel ingen mening, når samtlige sider på sitet er brugervenligt? Ingen sender mig tilbage til forsiden. Kun lige med den jeg har problemer med her.

Desuden så ER rækkefølgen rigtig. Først ser den om filen findes, hvis ikke, så ryger man til forsiden.
Avatar billede keysersoze Guru
15. december 2014 - 23:09 #15
Hvis alle dine redirects, rækkefølgen og al din kode er korrekt vil det virke (tadaa) - hvis det ikke virker og du ikke giver os noget at arbejde med er det som sagt umuligt at fortælle eller bare gætte på hvor det går galt.
Avatar billede keysersoze Guru
15. december 2014 - 23:22 #16
Hvis du ikke har teknisk snilde nok til at svare på spørgsmålene og du ikke vil fortælle hvad du har lavet må du tage det den kedelige vej - fx ved at deaktivere alle dine rewrites pånær lige præcis denne du arbejder på nu så du kan se om det er din rewrite der er forkert eller om det er en af de andre der ødelægger det for dig.
Avatar billede EveryMA Mester
16. december 2014 - 18:39 #17
jeg vil gerne give dig noget at arbejde med. jeg er klar over at du kan hjælpe, for det har du gjort mange gange før herinde når jeg har lagt et spørgsmål om. men som du siger, så burde det virke hvis rækkefølgen mv. er som det skal være.

jeg har prøvet at lege med det og lavet mange forskellige scenarier, (også deaktiveret den anden), lagt filen i en undermappe, og andet, men det spiller bare ikke.

Hvordan tjekker jeg helt præcist rækkefølgen?

når jeg klikker ind i Rewrite kommer der en tabel med mine funktioner/oprettede 'rules' i. Her kan jeg trykke Move up og down på samtlige mapper. og for hver Rule kommer der en Redirect og en Rewrite-mappe. Det har jeg egentlig først set nu og her er Redirect som standard øverst også kommer rewrite. Er det dén rækkefølge, eller?

Hvis jeg klikker ind på en bestemt fil/side under mappen 'rewrite', så kommer der igen en tabel hvori der er to "conditions". Dem kan jeg også rykke op og ned. Se billedet her:

http://postimg.org/image/v6jepc2o3/

Jeg vil gerne give dig flere detaljer hvis det er.
Avatar billede keysersoze Guru
16. december 2014 - 22:40 #18
Alt rækkefølge har en effekt.

Har du prøvet som nævnt at disable alt og teste kun det du arbejder med nu?
Avatar billede EveryMA Mester
18. december 2014 - 16:26 #19
Jeg har netop prøvet at disable alle andre rules og kun beholde den jeg ikke kan få til at virke. men det fungerer stadig ikke

det godt nok underligt at alle mine andre rules fungerer men denne gider bare ikke nærmest uanset hvad jeg forsøger!
Avatar billede keysersoze Guru
18. december 2014 - 18:26 #20
"fungerer ikke" betyder? fejl 400? fejl 500? eller?
Avatar billede EveryMA Mester
19. december 2014 - 19:10 #21
Fungerer ikke betyder det samme som i post #11 :-). Jeg ryger til forsiden, så det må være end 404.

Men. Jeg har slettet alle rules og kun oprettet til den som ikke virker, og nu virker det. Så det er som om at de kun kan arbejde med én adresse, som indeholder querystring. Resten er jo bare fil.asp lavet om til fil, hej.asp lavet om til hej (f.eks.) og derfor har det hidtil fungeret, da der kun har været én fil med id=x til slut.

Er der nogle 'regler' for hvordan man kan få flere til at køre på samme tid? Det er lige så snart man har 2 x fil.asp?id=2 eller siden.asp?navn=hej at det ikke fungerer (hvis der er to af den slags).

alle filer er i public_html mappen

Jeg har genoprettet alle rules. Det tager ingen tid, da det bare er at kopiere linket ind. Men hvis du har en idé til hvorfor den ikke vil køre flere af gangen må du gerne sige til :-D
Avatar billede keysersoze Guru
19. december 2014 - 19:50 #22
Min ide er, stadig, at du har en fejl i noget af det hemmelige vi ikke kan se.

Og "må være" er ikke et svar - enten er det en 404 eller også er det ikke så det må du kunne se via et network værktøj. Men hvis du havde disabled alle regler pånær denne ene  er der vel ikke noget der kan give en 404 til forsiden?

Tidligere, i 9, skriver du også at det gamle link hele ikke virker. URL rewrite laver ikke gamle URLs om til nye - det peger fiktive om til gamle så hvis de gamle URLs ikke virker er der et mere grundlæggende problem. Så virker den gamle URL uden rewrites? Med rewrites?

Hvis jeg forstår det sidste du siger korrekt så virker alt efter hensigten nu for begge regler såfremt kun en af dem er aktive? Hvis det er korrekt hvordan ser reglerne så ud?
Avatar billede EveryMA Mester
19. december 2014 - 20:19 #23
Præcis. Alt virker efter hensigten, såfremt kun én af dem er aktive. Jeg ved ikke helt hvad du mener med hvordan reglerne ser ud, må jeg indrømme. Når jeg oprettet en ny regel til et ny brugervenlig-link, så opretter den en Rewrite og en Redirect. (Corresponding redirect rule). Redirect-reglen er altid foran Rewrite url'en.

Mht. til #9 så kan jeg sagtens tilgå den almindelig side (side.asp), men den 'rewriter' straks url'en til "side".
Men jeg kan IKKE tilgå hverken den normale eller brugervenlige URL på side.asp?page=2 hvis den anden er aktiv.

Det er 301 der sender mig til forsiden, når url'en ikke findes, kan jeg se. For hver regel jeg laver, kommer der som nævnt en redirect med, og i denne redirect benytter den en 301 hvis siden ikke findes.
Avatar billede keysersoze Guru
19. december 2014 - 21:40 #24
Det er derfor man aldrig benytter værktøjer til den slags men selv laver koden så man ved hvad man får...

Der laves kun en redirect hvis du sætter hak i en checkbox - men den skulle meget gerne redirecte til den pæne url og ikke til forsiden. Altså må det være noget andet der redirect til forsiden medmindre du ryger igennem flere redirect-regler hvilket du igen også burde kunne følge.

Det jeg - stadig - mener med hvordan de ser ud er at se noget kode, eventuelt som tidligere forespurgt et screenshot af hele din url rewrite liste.

Jeg har gennem IIS-værktøjet som en test lige oprettet 2, dvs faktisk 4, regler præcis som dine med en redirect og en rewrite og de virker helt efter hensigten.

Det letteste som jeg ser det er at du igen disabler alle dine regler, sætter én på af gangen og så tester for på den måde at finde ud af præcis hvilken, der giver problemerne. Og hvis det du har auto-oprettet munder ud i 2 og ikke bare 1 regel skal du stadig kun enable 1 af gangen.

I øvrigt, selvom redirecten er fin at have med bør din kode omskrives til at udskrive den nye URL fremfor at du får en masse 301-redirects på din side.
Avatar billede keysersoze Guru
19. december 2014 - 21:46 #25
dvs, som jeg gætter på dine rewrites og redirects ser ud - har jo stadig kun fået lov til at se den ene.
Avatar billede EveryMA Mester
19. december 2014 - 22:50 #26
Jeg har taget billeder af begge 'regler' for redirect og rewrites. Skriv gerne hvis der er andet der kunne hjælpe.

Redirect-mappen ude i 'mappe-oversigten' ovenover rewrite (hvis det har noget at sige)

REDIRECT:
http://postimg.org/image/4dv32zqar/

REWRITE:
http://postimg.org/image/bl47w2ecx/
Avatar billede keysersoze Guru
19. december 2014 - 23:02 #27
Som nævnt - hvis mig hele listen.
Avatar billede keysersoze Guru
19. december 2014 - 23:15 #28
hvis = vis.

Og fandt du ud af præcis hvilken regel der får det til at fejle og hvilken der redirecter til forsiden?
Avatar billede EveryMA Mester
19. december 2014 - 23:17 #29
301 redirecter mig til forsiden.
nej, jeg ved ikke hvad der får den til at fejle.

med hele oversigten tænker du 'mappe-listen' over alle regler?
Avatar billede keysersoze Guru
19. december 2014 - 23:30 #30
den 301 der kan blive autogenereret vil som standard _ikke_ viderestille til forsiden men derimod til din rewrite - men det bør du kunne se i din Action URL. Derfor vil der være noget andet der får den til at redirecte.

Hvis du ikke ved hvilken regel der redirecter til forsiden har du så overhovedet testet som jeg skrev?

og ja - alle regler findes kun et sted og det er den liste jeg vil se sammen med præcis den URL du klikker på og som fejler.
Avatar billede EveryMA Mester
20. december 2014 - 12:00 #31
jeg kan ikke give dig hele listen med de originale url-navne. jeg kan erstatte dem og vise det. det er i og for sig også fuldstændigt det samme, så længe det er fil.asp lavet om til 'side-navn.asp'.

og ja, jeg har testet som du skrev, men igen: jeg er er ikke teknisk på det område, så jeg gik ud fra, at det var 301 der redirecter, da der står 301 nederst i de regler, som jeg opretter.

det er kun hvis der er fejl på de brugervenlige links, at jeg får forsiden at se. Ellers får jeg den normale standard 404, hvis siden generelt set ikke findes på serveren.
Avatar billede EveryMA Mester
18. oktober 2015 - 16:44 #32
lukker... har aldrig fundet ud af det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester