Avatar billede mazey Praktikant
25. januar 2009 - 16:29 Der er 7 kommentarer og
1 løsning

mod_rewrite problemer

Hej Eksperter.

Jeg forsøger at få noget mod_rewrite til at virke på mit php webhotel, og det virker for så vidt også, men jeg sidder lidt fast med udviklingen, og håber der er nogen der kan løse mine problemer.

Jeg har læst et par artikler, og har også fået følgende til at virke:

RewriteEngine on
RewriteRule ^site$ indextemp.php
RewriteRule ^site/([^/.]+)/?$ indextemp.php?page=$1 [L]
ErrorDocument 404 /404.html

Så kan jeg via php få fat i f.eks. www.example.com/site/index
(indextemp.php?page=index)
Problemet er når jeg gerne vil tilføje endnu en variabel i URL'en.
Her har jeg prøvet med:
RewriteRule ^site/([^/.]+)/([^/.]+)/?$ indextemp.php?page=$1&sub=$2 [L]

Dette virker også fint med f.eks. www.example.com/site/index/test/

Problemet er så hvis jeg prøver med første URL: www.example.com/site/index - så laver den en fejl 404, og det kan jeg ikke forstå.
Hvis man i php normalt har index.php?page=index&sub=test så virker index siden stadig, selvom der ikke er en variabel der hedder $sub.
Er der nogen der kan fortælle mig hvad jeg gør galt?

En anden ting er at jeg gerne vil have .htaccess filen til at redirecte i URL'en til http://www.example.com/site/index (også så den vises i URL'en)

Håber nogen kan hjælpe mig videre... :D
Avatar billede majbom Novice
25. januar 2009 - 16:37 #1
jeg bruger de her 2 linjer:

RewriteRule ^([a-zA-Z]+)$ index.php?site=$1
RewriteRule ^([a-zA-Z]+)/([a-zA-Z0-9]+)$ index.php?site=$1&id=$2
Avatar billede mazey Praktikant
25. januar 2009 - 17:55 #2
Hej Splazz.

Jeg har erstattet mit med dit, og kan se at det virker ok!
RewriteEngine on
RewriteRule ^site$ indextemp.php
RewriteRule ^site/([a-zA-Z]+)$ indextemp.php?page=$1
RewriteRule ^site/([a-zA-Z]+)/([a-zA-Z0-9]+)$ indextemp.php?page=$1&id=$2
ErrorDocument 404 /404.html

Nu er jeg ikke den store haj til mod_rewrite, så der er en ting jeg ikke lige forstår, og det er hvis jeg f.eks. skriver:
http://www.example.com/site/index så virker det fint, men skriver jeg
http://www.example.com/site/index/ så melder den fejl - har du nogen idé om hvordan jeg får den til at virke med begge?
Avatar billede mazey Praktikant
25. januar 2009 - 18:05 #3
Det tyder på at man bare kunne lave den således:
RewriteRule ^site/([a-zA-Z]+)/([a-zA-Z0-9]+)/?$ indextemp.php?page=$1&id=$2

Det ser ud til at virke ihvertfald! :D
Så er vi bare nede på, hvordan man får .htaccess til at redirecte i URL'en til  http://www.example.com/site/index ...
Avatar billede majbom Novice
25. januar 2009 - 19:03 #4
grunden til at den ikke virker med skråstregen efter, er at den ikke er et gyldigt tegn i forhold til dem du har angivet ([a-zA-Z]+)
Avatar billede tmi Nybegynder
25. januar 2009 - 23:12 #5
hvad er det der skal redirectes fra og hvor hen til? Du kan godt lave redirect, fx:
RewriteRule ^site/([a-zA-Z]+)/([a-zA-Z0-9]+)/$ http://www.example.com/site/$1/$2 [R=permanent]

Denne fjerner altså bare den sidste skråstreg
Avatar billede mazey Praktikant
26. august 2010 - 12:24 #6
Hej Splazz - ved gennemgang af min profil, kan jeg at dette spørgsmål stadig er åbent. Det kode du havde virkede fint, og efter jeg tilføjede ekstra tegn i mod_rewrite koden, virkede det som det skulle.

Vil du sende svar, så du kan få point.

Tak. :-)
Avatar billede majbom Novice
26. august 2010 - 18:17 #7
det kan vi da godt sige :)
Avatar billede majbom Novice
27. august 2010 - 21:23 #8
tfp :)
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