.htaccess opsætning (urlrewriting)

Tags:    diverse

Hej alle!

Jeg har læst en del om urlrewriting og kender til principperne. Det er også lykkedes mig at lave en del sider bygget på systemet.

Dog er jeg ofte støt ind i et mindre problem.

Hvis jeg foreksempel har en root mappe som ser således ud:

info/regler.php
info/FAQ.php
index.php
logind.php

Jeg vil gerne at foreksempelvis: /info/regler/ giver regler.php filen, mens /logind/ giver logind.php

Men med min nuværende ville tro at info var en fil og derfor info.php.

Samtidig skal alt info efter filnavnet naturligvis med i en querystring. Foreksempel: /info/FAQ/5/ så skal 5'tallet med i querystring så jeg kan hente det med $_GET i PHP.

Nogen der har en idé???

Evt. nogen som ved hvordan større/professionelle sider håndterer dette?



Et forslag kunne være at lave en fil kaldet f.eks. redirect.php som du så loader ALTID og i den kun skriver dine if rules og loader de andre filer ud fra den.
Du kan bruge variablen $_SERVER['REQUEST_URI'] og i dine eksempler skrive f.eks.
if ($_SERVER['REQUEST_URI'] == '/info/regler/'){
include(/info/regler.php);
}

eller i dit eksempel med fax:

if (substr($_SERVER['REQUEST_URI'],0,10) == /info/FAQ/){
include('/info/faq.php');
}
og så kan du bare hente dit 5 tal via noget preg_match og lave en error hvis det f.eks. ikke. findes.

Hvis du får mange if's (som du somregl gør) vil det være smart med switch i stedet.. det går hurtigere og er mere overskueligt.



Ja men så skal jeg til at lave en IF for hver enkelt fil jeg har? Det er en smule besværligt og det ville være federe med en fil som man ikke skulle rette i hele tiden, men som altid tjekkede om mappen eksisterede eller noget...



du kan vel bare skrive
Fold kodeboks ind/udKode 




Hvad dælen gør den?



Virker det så også hvis man skriver: domain.dk/logind/? til index.php ?



Med den løsning har jeg et problem Gnu, hvis jeg fx. gerne vil lave: domain.com/folder/file/23

hvor 23 kunne være et ID nummer, så tror den at jeg leder efter filen "23.php".



Med den løsning har jeg et problem Gnu, hvis jeg fx. gerne vil lave: domain.com/folder/file/23

hvor 23 kunne være et ID nummer, så tror den at jeg leder efter filen "23.php".


Du skal vist læse lidt mere om regulære udtryk (regular expressions).



Det kan du have ret i :P



Med den løsning har jeg et problem Gnu, hvis jeg fx. gerne vil lave: domain.com/folder/file/23

hvor 23 kunne være et ID nummer, så tror den at jeg leder efter filen "23.php".


Hvis du bruger den som GNU har vist, vil den kke lede efter filen 23.php, men den vil lede efter filen file.php altså; domain.com/folder/file/23
vil give: domain.com/folder/file.php?23




Ja sikkert :P



t