Hét vraag- en antwoordplatform van Nederland

.htacces mod_rewrite of rewrite_url? Hoe werkt dat?

Ik heb de volgende URL deze wil ik graag aanpassen naar iets makkelijks:

http://localhost/lala/la2/index.php

Dit moet dus bijvoorbeeld:

http://localhost/la2/home | worden..

Hoe doe ik dat? Zou iemand dit voor mij kunnen programmeren, met uitleg erbij?

Verwijderde gebruiker
12 jaar geleden
857

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

#Eerst zet je rewriteEngine aan:
RewriteEngine on

#Daarna zet je een rewriterule neer, eerst is de eis waar het aan moet voldoen, daarna de locatie waar het heen moet, en als laatste de flags:
RewriteRule ^lala/la2/index.php$ la2/home [R=301,L]

#Het bovenstaande betekend:
^ = het moet beginnen met
$ = het moet eindigen met
(Dus in dit geval moet het voldoen aan lala/la2/index.php)
Daarna zet je neer waar het heen moet: la2/home
En daarna de flags: R=301 is een permanent redirect, en de L staat voor Last, wat betekend dat hij niet verder hoeft te kijken.

Daarna moet je er nog voor zorgen dat als je naar de laatste link gaat, wel het juiste te zien krijgt:

RewriteRule ^la2/home/?$ lala/la2/index.php [NC,L]
In dit geval wordt hij niet doorgestuurd (zoals bij R=301), maar stuurt hij hem intern op de server door, zodat de url voor de client het zelfde blijft. NC is in dit geval No-Case wat hoofdletter ongevoelig betekend.

Dus in totaal heb je:

RewriteEngine on
RewriteRule ^lala/la2/index.php$ la2/home [R=301,L]
RewriteRule ^la2/home/?$ lala/la2/index.php [NC,L]
(Lees meer...)
Verwijderde gebruiker
12 jaar geleden
Verwijderde gebruiker
12 jaar geleden
Oké bedankt, nog één vraag: Momenteel staat mijn .htaccess in de la2 map, waar ook mijn index.php file staat, maar hij doet niets? Mijn .htacces is precies wat jij had: RewriteEngine on
RewriteRule ^lala/la2/index.php$ la2/home [R=301,L]
RewriteRule ^la2/home/?$ lala/la2/index.php [NC,L]
-- http://previewdump.com/1491-preview.html = mapstructuur
Verwijderde gebruiker
12 jaar geleden
Overigens staat het in xampp, dus xampp/htdocs/MAPNAAM/ moet dit dan ook zo in de .htacces?
Verwijderde gebruiker
12 jaar geleden
In dat geval gaat het niet werken. In dit geval moet de htaccess in de root staan. Anders, als je naar la2/home gaat, zal hij die htaccess nooit bereiken...
Verwijderde gebruiker
12 jaar geleden
Wat is in xampp precies de root?
Verwijderde gebruiker
12 jaar geleden
O, het werkt niet op Xampp. Jammer, maar ja, niets aan te doen :)
rose
12 jaar geleden
Je moet in httpd.conf op zoek gaan naar de regel waar dit staat: #LoadModule rewrite_module modules/mod_rewrite.so Het hekje dat ervoor staat (dus dit: #) zorgt ervoor dat deze regel genegeerd wordt door Apache. Aangezien dit de regel is om mod_rewrite te activeren en deze regel genegeerd wordt, is het dus logisch dat mod_rewrite niet werkt. Om deze regel toch te activeren, haal je simpelweg het hekje weg zodat je dit krijgt: LoadModule rewrite_module modules/mod_rewrite.so
rose
12 jaar geleden
We zijn nu nog niet klaar. Als we nu zouden stoppen met het “httpd.conf”-bestand te wijzigen, zou mod_rewrite mogelijk nog altijd niet werken. Hij wordt namelijk wel geactiveerd maar toch nog genegeerd. Dit komt omdat er bepaalde zaken als “AllowOverride None” gemarkeerd staan in je “httpd.conf”-bestand. Mod_rewrite-regels definieer je in je .htaccess-bestand. Maar standaard wordt er al een .htaccess-bestand “gesimuleerd” (hij doet alsof er eentje is). Dit gebeurt allemaal in het “httpd.conf”-bestand. Het probleem is dat je eigen .htaccess-bestand niet de toestemming krijgt om je eigen regels te laten gebruiken als dat standaard .htaccess-bestand de optie “AllowOverride None” heeft meegekregen. De optie zegt het zelf al, hij staat het overschrijven niet toe (hiermee bedoeld hij het overschrijven van zijn eigen regeltjes en informatie). Lees verder: http://hoedoejedat.be/apache/mod_rewrite-activeren-in-xampp

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding