.htaccess en mod_rewrite
Waarschijnlijk komt deze vraag al heel vaak voor, alleen ik kan hem niet vinden.
Wat ik wil is volgens mij heel simpel ik heb deze hoofdpagina`s:
- index.php
- activities.php
- organisation.php
- special.php
- social.php
Nu moeten deze links zo worden:
- index
- activities
- organisation
- special
- social
Nu heb ik dit gedaan in de .htaccess om te proberen:
RewriteEngine On
RewriteRule ^activities $ activities.php
--------------
Maar ik krijg een mooie melding:
Server fout!
De server kreeg een interne fout en kon uw vraag niet beantwoorden. De server is overbelast of er was een fout in een CGI script.
Indien u van oordeel bent dat deze server in fout is, gelieve de webmaster te contacteren.
ERROR 500
---------------
Ik zal vast iets verkeerd doen maar ik snap hem gewoon niet hoe dit zit.
Wie o wie kan mij helpen??
Alvast enorm bedankt!
Je had een spatie tussen de s en de $ ;-)
Heel erg bedankt, ik kon het niet vinden maar ik heb hem.
Echt bedankt, later deze maand zal ik met een vervolg vraag komen maar nu ben ik nog niet zo ver.
Geen probleem =)
Stel je tikt nu een woord in die niet bestaat, bijv. hallo inplaats van index.
Nu wil ik dat dat wordt doorgestuurd aan bijv. nietgevonden.php moet ik dit dan toevoegen:
Code (php)
1
2
3
4
2
3
4
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/(.*) nietgevonden.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/(.*) nietgevonden.php
Gewijzigd op 18/05/2010 10:24:43 door Michael Braam
Je kunt simpelweg die RewriteRule als laatste rule toevoegen, waarbij je er wel voor zorgt dat je alle voorgaande rules de [L] flag meegeeft. Op die manier wordt je doorgestuurd naar nietgevonden.php als er niet aan een van de andere rules voldaan wordt.
Gewijzigd op 17/05/2010 13:42:01 door Joren de Wit
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
RewriteEngine On
RewriteRule ^index$ index.php
RewriteRule ^activities$ activities.php
RewriteRule ^special$ special.php
RewriteRule ^organisation$ organisation.php
RewriteRule ^social$ social.php
ErrorDocument nietgevonden.php
RewriteRule ^index$ index.php
RewriteRule ^activities$ activities.php
RewriteRule ^special$ special.php
RewriteRule ^organisation$ organisation.php
RewriteRule ^social$ social.php
ErrorDocument nietgevonden.php
Want dit werkt niet :(
Gewijzigd op 18/05/2010 10:25:06 door Michael Braam
En wát werkt er dan niet? ;-)
----------------------
Object niet gevonden!
De gevraagde URL was niet gevonden op deze server. Indien u de URL manueel hebt ingevuld, gelieve uw spelling te controleren en probeer opnieuw.
Indien u van oordeel bent dat deze server in fout is, gelieve de webmaster te contacteren.
Error 404
----------------------
is het niet ErrorDocument 404?
Inderdaad Niels, moet dus zijn ErrorDocument 404 nietgevonden.php
nietgevonden.php
Dit heb ik nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
RewriteEngine On
RewriteRule ^index$ index.php
RewriteRule ^activities$ activities.php
RewriteRule ^special$ special.php
RewriteRule ^organisation$ organisation.php
RewriteRule ^social$ social.php
# Other Pages
RewriteRule ^news$ news.php
RewriteRule ^photogallery$ photogallery.php
RewriteRule ^videogallery$ videogallery.php
ErrorDocument 404 nietgevonden.php
RewriteRule ^index$ index.php
RewriteRule ^activities$ activities.php
RewriteRule ^special$ special.php
RewriteRule ^organisation$ organisation.php
RewriteRule ^social$ social.php
# Other Pages
RewriteRule ^news$ news.php
RewriteRule ^photogallery$ photogallery.php
RewriteRule ^videogallery$ videogallery.php
ErrorDocument 404 nietgevonden.php
Gewijzigd op 18/05/2010 10:24:18 door Michael Braam
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
RewriteEngine On
RewriteRule ^index$ index.php
RewriteRule ^activities$ activities.php
RewriteRule ^special$ special.php
RewriteRule ^organisation$ organisation.php
RewriteRule ^social$ social.php
# Other Pages
RewriteRule ^news$ news.php
RewriteRule ^photogallery$ photogallery.php
RewriteRule ^videogallery$ videogallery.php
ErrorDocument 404 /nietgevonden.php
RewriteRule ^index$ index.php
RewriteRule ^activities$ activities.php
RewriteRule ^special$ special.php
RewriteRule ^organisation$ organisation.php
RewriteRule ^social$ social.php
# Other Pages
RewriteRule ^news$ news.php
RewriteRule ^photogallery$ photogallery.php
RewriteRule ^videogallery$ videogallery.php
ErrorDocument 404 /nietgevonden.php
Ik krijg dan deze melding:
Not Found
The requested URL /--/--/--/--/--/900/hallo was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Dan nog een RewriteBase toevoegen ;-)
Dit heb ik toegevoegd maar dit helpt niet.
Wat er wordt aangegeven is dat als ik een naam invul achter de link dat deze niet bestaat, hij zoekt naar het bestand en als deze er niet is krijg je die melding, maar hij zou moeten "forwarden" naar nietgevonden.php. Of begrijp ik hem verkeerd?
---
Ik ben pas sinds vandaag actief met de .htaccess bezig vandaar mijn simpele vragen en bij elk antwoord moet ik even kijken waarom enz :P
Overigens, jij hebt in je URL nu staan /900/hallo, maar in je .htaccess zie ik dat nergens terugkomen. Voor iedere URL (/900/hallo bijvoorbeeld dus) moet je een Rule aanmaken.
Bijvoorbeeld:
RewriteRule ^([0-9])/([a-z])$ news.php?id=$1
sorry ik snap dat niet :D
Je zegt dat als je naar de url *domein*.tld/900/hallo gaat, je een 404 error krijgt. Dat komt, omdat je nergens heb aangegeven wat die URL doet ;-)
Ik heb een aantal links erin staan die werken en kloppen.
Maar wat ik bijv. wil is dat als er een grappenmaker komt en die typt het volgende:
http://www.domeinnaam.nl/hallo, dat ze niet die lelijke melding krijgen van deze pagina kan niet worden gevonden maar juist gewoon de layout van de website met daarin een melding deze pagina kan niet worden gevonden. Het woordje hallo kan dus ook zijn "handigeharry" of ....