Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[APACHE] htaccess reg expr probleem

Pagina: 1
Acties:

  • Scheeve
  • Registratie: Maart 2006
  • Laatst online: 12-11 22:00
Ik zit met een klein probleempje waar ik nu al een poosje op vast loop. Het lijkt echter een niet echt moeilijk probleem, maar heb tot dusver geen oplossing gevonden en hoop dat iemand hier mij ermee kan helpen.

Het volgende is het geval:
In mijn htaccess heb ik de volgende mod rewrite regel opgenomen:
code:
1
RewriteRule ^([a-zA-Z0-9/@.]*)$ /index.php [NC]

Deze geeft een 500 internal server error

Wat ik wil is dat gewoon de karakters: a-z A-Z 0-9 / @ en de . gebruikt kunnen worden in de urls. Alleen lukt het me niet om die . erbij te integreren.

Wat werkt wel:
code:
1
RewriteRule ^([a-zA-Z0-9/@]*)$ /index.php [NC]


Heeft iemand een idee wat ik fout doe? Voor zover ik weet hoef ik de punt niet te escapen.

Verwijderd

/index.php matcht die rule ook, dus hij blijft hangen in een loop.
Oplossen door een regel ervoor te zetten:

RewriteCond %{REQUEST_URI} !^/?index.php$

  • Scheeve
  • Registratie: Maart 2006
  • Laatst online: 12-11 22:00
Verwijderd schreef op zaterdag 10 mei 2008 @ 11:33:
/index.php matcht die rule ook, dus hij blijft hangen in een loop.
Oplossen door een regel ervoor te zetten:

RewriteCond %{REQUEST_URI} !^/?index.php$
Je hebt helemaal gelijk! Alleen kom ik er nu achter dat mijn style.css niet meer in gebruik wordt genomen. Dit is op zich logisch maar is toch wel op te lossen door er een rewrite rule voor deze te zetten speciaal voor dat bestand. Ik ga het eens proberen.

//edit
Ik kom er niet toch niet uit, overigens begrijp ik niet waarom je het ? voor index.php hebt gestopt, dus die heb ik weggehaald.

dit heb ik geprobeerd toe te voegen, zonder resultaat:
code:
1
2
RewriteCond %{REQUEST_URI} ^/style.css$
RewriteRule ^(.*)$ /style.css [NC,L]

[ Voor 37% gewijzigd door Scheeve op 10-05-2008 11:51 ]


Verwijderd

RewriteCond %{REQUEST_URI} !^/?(index\.php|style\.css)$
RewriteRule ^([a-zA-Z0-9/@]*)$ /index.php

Die ? is een stukje gewoonte van mijzelf. Die / aan het begin is dan niet verplicht. Een overblijfseltje uit vroegere tijden denk ik. De [NC] hoeft niet als je al a-zA-Z gebruikt.

  • Scheeve
  • Registratie: Maart 2006
  • Laatst online: 12-11 22:00
Verwijderd schreef op zaterdag 10 mei 2008 @ 12:44:
RewriteCond %{REQUEST_URI} !^/?(index\.php|style\.css)$
RewriteRule ^([a-zA-Z0-9/@]*)$ /index.php

Die ? is een stukje gewoonte van mijzelf. Die / aan het begin is dan niet verplicht. Een overblijfseltje uit vroegere tijden denk ik. De [NC] hoeft niet als je al a-zA-Z gebruikt.
Bedankt voor de uitleg en de hulp tot nu toe, ik begin al beter te begrijpen hoe de mod rewrite module werkt!

Alleen verhelpt dit nog niet het probleem met de style.css en ik weet niet waarom dit het geval is.
Even ter verduidelijking, dit is de code voor het gebruik van de stylesheet:
[code]<link rel="stylesheet" href="/style.css" type="text/css" />[/code]
uit de index.php

//edit
ik ben erachter gekomen dat de stylesheet wel werkt, maar dat de images gebruikt in de stylesheet niet werken :P

//edit2
uiteindelijk met deze RewriteCondition gekomen:
code:
1
RewriteCond %{REQUEST_URI} !^/?(index\.php|style\.css|.*\.(gif|GIF|jpg|JPG|png|PNG)$)$

[ Voor 15% gewijzigd door Scheeve op 10-05-2008 13:30 ]


Verwijderd

Makkelijkste oplossing: plaats alles wat niet gerewrite hoeft te worden in een aparte directory. Ik gebruik altijd de directories template (daarin kun je alles wat met layout te maken heeft kwijt) en content (voor alle niet-layout content). Dan kun je de RewriteCond een stuk simpeler houden:

RewriteCond %{REQUEST_URI} !^/?(index\.php$|template/|content/)

Alleen het pad naar je stylesheet moet je dan in de HTML veranderen (template/style.css), in de stylesheet zelf verandert niets aangezien je daar over het algemeen relatieve paden gebruikt.

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Weet je wat het mooiste is van mod rewrite? Gruwelijk uitgebreide logging ;)

Verder kan je ook een RewriteCond maken die je laat testen of de opgevraagde file bestaat, en alleen rewriten als dat niet het geval is :)

  • Scheeve
  • Registratie: Maart 2006
  • Laatst online: 12-11 22:00
Verwijderd schreef op zaterdag 10 mei 2008 @ 13:40:
Makkelijkste oplossing: plaats alles wat niet gerewrite hoeft te worden in een aparte directory. Ik gebruik altijd de directories template (daarin kun je alles wat met layout te maken heeft kwijt) en content (voor alle niet-layout content). Dan kun je de RewriteCond een stuk simpeler houden:

RewriteCond %{REQUEST_URI} !^/?(index\.php$|template/|content/)
Moet je dan niet ook nog even aangeven dat dat voor alle bestanden in die directories geldt, dus zoiets:
[code]RewriteCond %{REQUEST_URI} !^/?(index\.php$|template/.*|content/.*)

Maar je hebt gelijk dat dit handiger is, ik kan in ieder geval weer verder prutsen met mijn php projectje :P Bedankt!

Verwijderd

Die .* is zinloos. Er staat toch al geen $ aan het eind.
Pagina: 1