Avatar billede flodhesten Nybegynder
23. maj 2009 - 22:56 Der er 14 kommentarer og
1 løsning

Pænere links - hjælp til htaccess

Hej.

Jeg har en side der hedder

domæne.dk/showpage.php?pagename=side1

Jeg kunne godt tænke mig, at man kunne tilgå denne side ved at bruge:

domæne.dk/side1
eller
domæne.dk/side1/

Den samme side skal vises om den sidste skråstreg er der eller ej.

Jeg håber, at der er nogle der kan hjælpe.

Hvis det kan lade sig gøre, vil jeg gerne have et decideret eksempel og ikke bare et link til en side.
Avatar billede acore Ekspert
24. maj 2009 - 00:47 #1
Læg følgende i en fil med navnet .htaccess i roden på din server:

Options +FollowSymlinks
RewriteBase /
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domæne.dk [NC]
RewriteRule (.*)$ http://www.domæne.dk.dk/$1 [R=301,NC]
RewriteRule ^(.*)side([0-9]*)$ showpage.php?pagename=side$2[L,NC]
RewriteRule ^(.*)side([0-9]*)/$ showpage.php?pagename=side$2[L,NC]

Sørg for at rewrite/htaccess er aktiveret - det er det ikke automatisk hos alle.
Avatar billede henninghabor Nybegynder
24. maj 2009 - 12:43 #2
RewriteEngine On
RewriteBase /

RewriteRule ^side([0-9]+)/?$ /showpage.php?pagename=side$1
Avatar billede showsource Seniormester
24. maj 2009 - 14:28 #3
Well, jeg bruger:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]+)(/)?$ /index.php?id=$1

Den "fanger" index.php, og kun for tegnene a til z samt 0 til 9 + evt. /
Avatar billede showsource Seniormester
24. maj 2009 - 14:30 #4
Og efterflg. bruges / i en stiangivelse for f.eks. img:

<img src="/images/billede.jpg">

<link rel="stylesheet" type="text/css" href="/style.css">
Avatar billede flodhesten Nybegynder
24. maj 2009 - 17:08 #5
Jeg har følgende kode nu:

RewriteEngine On
RewriteRule ^([^/.]+)/?$ index.php?id=$1 [L]

men min css virker kun når jeg bruger:

domæne.dk/navn
og ikke når jeg bruger
domæne.dk/navn/

Hvordan kan jeg løse dette?

Eventuelt kunne man videre stille til siden med en afsluttende parantes når man besøger siden ud - men hvordan?

På forhånd tak.
Avatar billede flodhesten Nybegynder
24. maj 2009 - 17:17 #6
Arh. Det tager showsource' kode højde for.

Men alligevel kunne det måske være smart at viderestille fra den uden parantes til sidst til den der har, så der kun er én url til siden.

Kunne man gøre det på nogen måde?
Avatar billede showsource Seniormester
24. maj 2009 - 17:37 #7
parentes ?
Hvis du vil ha' url skal afslutte med / vil jeg tro du skal bruge:

RewriteRule ^([A-Za-z0-9]+)(/)$ /index.php?id=$1

Men jeg forstår ikke din "parentes" :O)
Avatar billede flodhesten Nybegynder
24. maj 2009 - 17:49 #8
Argh, ved ikke hvad jeg tænker på... SKRÅSTREG!

Hehe, men det jeg mener er, at hvis man indtaster

domain.dk/tekst

så vil man automatisk blive viderestillet til

domain.dk/tekst/

Kan det mon lade sig gøre? :P
Avatar billede showsource Seniormester
24. maj 2009 - 18:27 #9
ehh, ved ikke lige i en .htaccess, men med php: ( og mit første ex. )

$url = substr($_SERVER["REQUEST_URI"], (strlen($_SERVER["REQUEST_URI"])-1));

    if($url != "/") {
    header("Location:http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]."/");
    exit;
    }

som jo så skal i toppen af hver request.
Avatar billede henninghabor Nybegynder
24. maj 2009 - 21:23 #10
Mht. at fange din css fil, skal du jo bare skrive hele url:

http://www.minside.dk/style.css.

Jeg har valgt at skrive hele url ved alt der skal hentes ind og ved alt der går ud.

Dvs. at links til interne sider også har hele url.

http://www.minside.dk/side1/
http://www.minside.dk/side2/

Med php er der en lækker funktion, der hedder http_host, så når man laver siden på den lokale computer, behøver man ikke skrive url om, når man skal putte siden live:

<?php
echo "http://" . http_host() . "/side1/";
?>
Avatar billede flodhesten Nybegynder
25. maj 2009 - 00:34 #11
Arh, det er bare perfekt.

Jeg er specielt glad for din løsning, showsource, så den vil jeg gerne give point for.

Også tak til jer andre med input til mit problem.
Avatar billede showsource Seniormester
25. maj 2009 - 07:51 #12
Et svar.

Lidt læsning:
http://forums.devshed.com/apache-development-15/mod-rewrite-guide-common-requests-267522.html

Og det burde være muligt at "tvinge" en afsluttende / i en .htaccess, men jeg ved ikke lige hvordan .....
Avatar billede showsource Seniormester
25. maj 2009 - 07:51 #13
Nåh.....
Avatar billede acore Ekspert
26. maj 2009 - 20:17 #14
Hvis du havde læst det allerførste svar du fik (fra mig), ville du bemærke disse 2 linier:

RewriteRule ^(.*)side([0-9]*)$ showpage.php?pagename=side$2[L,NC]
RewriteRule ^(.*)side([0-9]*)/$ showpage.php?pagename=side$2[L,NC]

der netop sørger for med .htaaccess at redirrigere til den samme side uanset om der er en slash med eller ej til sidst. Præcis som du bad om.

Det er da ok, at du vælger en anden løsning, men det er ikke opmuntrende at give svar som ikke engang læses/afprøves.
Avatar billede flodhesten Nybegynder
26. maj 2009 - 22:32 #15
acore > Jeg vil til det sige, at jeg rent faktisk forsøgte at bruge din kode, men at jeg ikke havde succes med at integrere denne. Jeg skal ikke kunne sige hvorfor, måske fordi din kode ikke kun gør det jeg bad om, og at jeg på daværende tidspunkt ikke havde nok viden om dette. Da jeg første gang vendte tilbage til mit spørgsmål, var der 3 indlæg, og naturligvis prøver dem alle. Naturligvis vælger jeg den som jeg kan få til at fungere.

Desuden synes jeg også det skal belønnes, at der svares på uddybende spørgsmål og vender tilbage til spørgsmålet gentagne gange. Der står vel ingen steder, at man skal gå efter først til mølle princippet? Hvis jeg skal være ærlig, så må jeg indrømme at også henninghabor stod før i køen til point end dig.

Og hermed ikke sagt, at jeg ikke værdsætter dit hurtige svar og indsats. Jeg mener også, at jeg tydeligt fik sagt tak.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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