htaccess rewrite

  • Goede middag heren,


    Ik loop op dit moment vast met het maken van friendly urls. Op dit moment probeer ik via een .htaccess bestand friendly urls te maken door inplaats van mijn huidige urls: index.php?page=home het volgende te maken /home. Kortom ik wil dat index.php?page= niet meer weergegeven wordt. Nu staan er tal van tutorials online en heb ik al meerdere dingen geprobeerd echter veranderd er bij mij niets. Ik heb zelfs de tutorial van mijn hosting provider: "Pcextreme" gebruikt en dat veranderde ook niks. Wat doe ik fout?



    Apache Configuration
    RewriteEngine On
    RewriteBase /
    RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$home


    Alvast bedankt voor jullie tijd en moeite.

  • Twee dingen die ik direct zie:
    - er staat een slash aan het einde van het eerste deel van je RewriteRule (het patroon) wat gematcht moet worden, dus tenzij je /home/ gebruikt in plaats van /home zal er waarschijnlijk inderdaad niet zoveel gebeuren (EDIT: hmm, misschien maakt dit niet eens zoveel uit, het wordt immers niet gematcht; EDIT: zonder eindslash lijkt het toch niet te werken :))
    - in het tweede deel van je RewriteRule staat $home, maar wat hiervoor in de plaats zou moeten komen is een zogenaamde back reference naar onderdelen in je patroon tussen ( ronde haken ). Je kunt naar je eerste paar haken (gezien van links naar rechts in je patroon) aanspreken via $1, het tweede paar via $2 et cetera


    Daarnaast zou je ook even na moeten gaan of mod_rewrite is geladen en je .htaccess bestanden overal mag declareren.


    Persoonlijk zou ik voor een andere aanpak kiezen. Zo zou je gewoon al je requests kunnen laten verwijzen naar index.php (EDIT: er vanuitgaande dat je PHP gebruikt, haha). Zo heeft je applicatie een single point of entry (lees: één voordeur). In je index.php zou je $_SERVER['REQUEST_URI'] kunnen controleren en ontleden om te bepalen of en welke pagina er geladen moet worden.


    Als de pagina niet bestaat, zou je bijvoorbeeld een 404 header terug kunnen geven (pagina niet gevonden). Dat is wel zo vriendelijk naar zoekmachines. Ik zal even kijken of ik een simpel voorbeeld in elkaar kan zetten.

  • Beste FangorN,


    Alvast heel erg bedankt voor je reactie. Ik ga het even op mijn gemak doornemen om vervolgens met je tips aan de slag te kunnen. Haha ja ik maak gebruik van PHP. Ik heb inmiddels een 2 index gemaakt een dubbele x omdat in mijn eerste mijn header location staat.


    Edit misschien is het makkelijker als ik de desbetreffende website er ook bij post, zodat met een idee heeft wat ik verkeerd doe:


    Future House Music

  • Iets wat je sowieso kunt doen is het toevoegen van een base-tag in je HTML head, anders kloppen je relatieve verwijzingen van je stylesheets niet meer. Deze regel moet je uiteraard VOOR enige verwijzing naar een stylesheet zetten.


    Bijvoorbeeld:

    Code
    <head>
    ...
    <base href="http://www.futurehousemusic.net/">
    ...
    </head>


    Je browser denkt namelijk dat je in een subfolder zit. Als je een relatieve verwijzing maakt naar je stylesheet, zal je browser deze proberen op te vragen in je subfolder, terwijl deze ergens anders staat...


    Nu zal een aanroep naar /tracks/ er wat beter uitzien :).


    Een alternatief is dat je alle URL's absoluut maakt.

  • Hier is een voorbeeld van een .htaccess bestand dat alles doorstuurt naar index.php.


    De .htaccess:


    index.php:


    Vervolgens kun je allerlei URL's aanroepen, deze worden allemaal doorgestuurd naar index.php. Vervolgens kun je met behulp van $path nagaan welke specifieke pagina's iemand op wilde vragen.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!