login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Mod-rewrite: paden

Offline Dark_Paul - 08/05/2007 20:03 (laatste wijziging 07/10/2007 14:13)
Avatar van Dark_PaulPHP ver gevorderde He,
Eerst liet ik 'pagina.php' omzetten in 'index.php?p=pagina'.
Nu wil ik voor de band '/pagina' om laten schrijven naar '?p=pagina'.
Nu vroeg ik me af hoe jullie het met de afbeeldingen en stylesheets regelen.
Om voor elke afbeelding een absolute url te gaan gebruiken is geen optie. Ik heb zitten kloten met een rewrite, maar dat lukt nog niet helemaal.
  1. RewriteEngine On
  2. RewriteRule index.php - [L]
  3. RewriteRule (.*)/images/(.*) localhost/12gauge/images/$2 [L]
  4. RewriteRule (.*)/style.css localhost/12gauge/style.css [L]
  5. RewriteRule /([a-z]*) index.php?p=$1&%{QUERY_STRING} [L]

Voor zowel de stylesheet als de afbeelding werken ze niet.

Ik heb ook nog problemen met de url zelf maken, ik wil gewoon www.domein.com/pagina maar dat lukt me ook niet. Als ik er geen '/' achter zet, krijg ik dat de pagina niet gevonden wordt.
Zet ik die '/' er achter, dan kan ik oneindig er achteraan blijven plakken (www.domein.com/home/home/home/home/home...).

EDIT:
Het lukt nog steeds niet, dus ik het dit topic 'heropend'. Lees mijn laatste post in dit topic eerst, alvorens te reageren!

14 antwoorden

Gesponsorde links
Offline gothmog - 08/05/2007 20:09 (laatste wijziging 08/05/2007 20:10)
Avatar van gothmog Lid Zet in je index.php tussen de <head></head> tags:
  1. <base href="http://www.phone-tone.nl/new/NL/">
(voorbeeldje dat ik zelf gebruik^^)

Doe je RewriteRule zo:
  1. RewriteEngine On
  2. RewriteRule ^([a-z]*)$ index.php?p=$1&%{QUERY_STRING} [L]

Dus zonder die image enzo...

Ow wat ben ik op dreef vandaag:)
Offline Dark_Paul - 08/05/2007 20:24 (laatste wijziging 08/05/2007 20:24)
Avatar van Dark_Paul PHP ver gevorderde Dat werkt inderdaad!
Ik weet dat ik maximaal 2 $_GET-waarden meegeef aan de url. 'p' en 'act'.
Nu wil ik dus /p/act omschrijven naar ?p=..&act=..
Dat dacht ik in één regel te kunnen schrijven, zo dus:
  1. RewriteEngine On
  2. RewriteRule index.php - [L]
  3. RRewriteRule ^([a-z]*)(/([a-z]+))?$ index.php?p=$1&act=$3 [L]

Maar dan krijg ik een Internal Server Error (dus iets mis met die .htaccess).
Ben je nog helder genoeg om deze ook te zien Gothmog?

Offline gothmog - 08/05/2007 20:30
Avatar van gothmog Lid Met htacces moet je van zo moeilijk mogelijk naar zo simpel mogelijk. Dus dat gaat zo:
  1. RewriteEngine On
  2. RewriteRule index.php - [L]
  3. RRewriteRule ^([a-z]*)(/([a-z]+))?$ index.php?p=$1&act=$3
  4. RRewriteRule ^([a-z]*)$ index.php?p=$1 [L]
Offline Dark_Paul - 08/05/2007 20:37 (laatste wijziging 08/05/2007 20:39)
Avatar van Dark_Paul PHP ver gevorderde Haha, nee, je was dus niet helder genoeg meer.
Ik zie de fout nu zelf, RRewriteRule.
Het kan gemakkelijk ineen, dus dat is het probleem niet.

Edit: toch moet ik zeggen dat het niet werkt.
Als ik nu de URL /blaat/1 maak, krijg ik toch dat de pagina niet kan worden gevonden.
Offline CDNC - 08/05/2007 20:46
Avatar van CDNC PHP ver gevorderde logis!

kijk naar de regex: [a-z] geen cijferkes dus...
Offline Dark_Paul - 08/05/2007 20:54 (laatste wijziging 08/05/2007 20:55)
Avatar van Dark_Paul PHP ver gevorderde Doh! Inderdaad ><

Hmm, als ik naar '/news/1' ga, heb ik weer het probleem dat ik geen stylesheet en afbeeldingen heb. Op alle andere links ('/bla') heb ik ze wel gewoon.
Offline ikkedikke - 08/05/2007 23:53 (laatste wijziging 08/05/2007 23:53)
Avatar van ikkedikke PHP expert maak dan iedere link die je wil herschrijven zo dat die eindigt op .html oid.
dan kan je de requests eruit filteren.
ik gebruik het volgende:
  1. Rewriterule ^/([A-Za-z0-9]+)/(.+)\.html?$ /index.php?inc=$1&$2

zo kun je 1 vaste (altijd aanwezige) parameter meegeven en daarna is alles vrij.
PS: voor dat stuk '[A-Za-z0-9]' is een mooiere oplossing door de boel case insensitive te maken, maar dat kan altijd nog.
Offline Dark_Paul - 09/05/2007 15:43
Avatar van Dark_Paul PHP ver gevorderde Ik wilde deze keer juist geen extensie erachter zetten.
Omdat ik weet dat ik maximaal 2 $_GET-waardes heb, dacht ik dit gewoon op te kunnen vangen.
Dat werkt wel, als ik naar '/map/1' ga, dan zie ik '1' als ik $_GET['act'] echo.
Alleen zit ik dus met die stylesheet en afbeeldingen.
Offline Ultimatum - 09/05/2007 15:46
Avatar van Ultimatum PHP expert Maak het path naar je stylesheet absolute, dus eerst $_SERVER['DOCUMENT_ROOT'] en dan verder werken naar je stylesheet, werkt bij mij goed. En in je css ook gewoon het gehele path typen. Zo doe ik het ook en bij mij werkt het gewoon goed
Offline Dark_Paul - 09/05/2007 15:50
Avatar van Dark_Paul PHP ver gevorderde Dat was dus het probleem, dat kan ik bij alle afbeeldingen niet gaan doen. Wordt erg veel werk, daarom zocht ik een oplossing mbv htaccess.
Offline Ultimatum - 10/05/2007 09:03
Avatar van Ultimatum PHP expert Wat je kan doen is je css in een php pagina te zetten en dan met content-type oid, zet je het bestand om naar css. Zo kan je php gebruiken en kan je een var maken waar de url in staat
Offline Dark_Paul - 07/10/2007 14:11
Avatar van Dark_Paul PHP ver gevorderde *Flinke schop

Ik ben ondertussen bezig met een nieuw project, maar daarbij heb ik hetzelfde probleem. De base-tag lijkt niet goed te werken.
Dit is mijn .htaccess:
  1. RewriteEngine On
  2. RewriteRule index.php - [L]
  3. RewriteRule ^([a-z]+)/([a-z0-9=])+$ index.php?page=$1&$2 [L]
  4. RewriteRule ^([a-z]*)$ index.php?page=$1 [L]

Als ik naar domein.com/pagina ga, is er niets aan de hand. Als ik naar domein.com/pagina/iets zijn de stylesheet en afbeeldingen weer weg.
Ondanks dat ik in mijn head-tags deze tag heb staan:
  1. <base href="localhost/reunie">

Met of zonder '/' aan het einde (localhost/reunie/) maakt geen verschil. Boven of onder de stylesheet-oproep maakt ook geen verschil.
Waarom werkt dit niet gewoon zoals het hoort, zowel lokaal als op een andere server?

Ps. de manier van Ultimatum lijkt me veel werk en onnodig. Dan zou ik dus als ik iets upload, alle paden naar de plaatjes moeten wijzigen. Met de base-tag moet het gewoon werken lijkt me.
Offline Thomas - 08/10/2007 13:03
Avatar van Thomas Moderator De base-tag moet de volledige URL bevatten, niet enkel een relatief pad.
Offline Dark_Paul - 08/10/2007 17:37
Avatar van Dark_Paul PHP ver gevorderde Nee, werkt niet.
Ook op de testserver heb ik in de base-tag de gehele url gezet, maar die doet het nog niet.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.289s