Mod_rewrite vriendelijke URL adressen

Door Miranda Verburg, 20 jaar geleden, 38.468x bekeken

Uitleg over vriendelijke URL adressen (mod rewrite / multiviews). Krijg i.p.v. http://www.phphulp.nl/script.php?cat=3&id=25&pid=424 vriendelijke http://www.phphulp.nl/script/3/25/424/ URL adressen.

Gesponsorde koppelingen

Inhoudsopgave

  1. Voorbereidingen
  2. URL vriendelijke pagina's maken
  3. Voorkomende problemen

 

Er zijn 135 reacties op 'Modrewrite vriendelijke url adressen'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Eris -
Eris -
20 jaar geleden
 
Leuk. Maar dit is meer .htacces dan php :)


20 jaar geleden
 
0 +1 -0 -1
lijkt me wel handig!
Ik heb wel een probleem:
Heb een adres bij lycos en heb die info() gedaan; er staat nergens een onderdeel apache. Wel weet ik dat .htaccess en .htpass werkt maar nu weet ik het nie van die mod_rewrite. weet iemand dit misschien??
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
Ik zou het gewoon proberen :)
Eris -
Eris -
20 jaar geleden
 
0 +1 -0 -1
Raar ik krijg het niet werkend. Als ik http://www.mol-clan.nl/link doe. Met dit als .htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) index.php?page=$1 [NC,L]
ErrorDocument 404 http://schipbreukeling.mol-clan.nl/404
ErrorDocument 403 /error.php?page=403
ErrorDocument 401 /error.php?page=401
ErrorDocument 500 /error.php?page=500

krijg ik mijn "404" pagina. Ik heb even voor de gein.
echo $page gedaan en dan krijg ik index.php te zien.

Weet iemand wat ik fout doe of kan bas zijn .htacces even voor de gein posten?
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
Mijn .htaccess staat gedeeltelijk in de tutorial. Maar waarom is: [NC,L]? Probeer anders eens:

RewriteRule (.*) index.php?page=$1
of
RewriteRule ^(.*) index.php?page=$1
De VeeWee
de VeeWee
20 jaar geleden
 
0 +1 -0 -1
Forbidden
You don't have permission to access /fauvee/scouts/upload/upload.php on this server.

betekent dat dat die mod_rewrite niet opstaat; dit is mijn file (om te testen):

RewriteEngine On
RewriteRule ^fauvee/scouts/upload/upload/(.*)/ /fauvee/scouts/upload/upload.php?func=$1
RewriteRule ^fauvee/scouts/upload/upload/(.*) /fauvee/scouts/upload/upload.php?func=$1
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
Hoe roep je je URL adres aan en werkt het wel als: http://www.joudomein.nl/favee/scouts/upload/upload.php?func=iets ??
De VeeWee
de VeeWee
20 jaar geleden
 
0 +1 -0 -1
http://members.lycos.nl/fauvee/scouts/upload/upload.php?func=iets

zo werkt het (als de mod_rewrite niet in htaccess zit); als ik het het wel bestaat kom ik op een 40. error denk ik (forbidden)

als ik de url intyp met /upload/iets dan werkt hij ook niet zelfde fout

...
Mitch X
Mitch X
20 jaar geleden
 
0 +1 -0 -1
Hmmz, ff een vraagje voordat ik ga klo0ien, kun je die /1/2/3 ook gewo0n met $_GET aanroepen? :P
Ja cker?
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
@ vewee, dat forbitten gebeure komt niet door de mod_rewrite. Check de paths naar je bestanden.. Meestal krijg je een forbitten door een map aan te roepen waar geen index bestand in staat.. Nogmaals, hoe roep je de URL adres aan (volledig) met mod_rewrite? :)

@Mitch, die kun je aanroepen via $_GET ja.


20 jaar geleden
 
0 +1 -0 -1
Bas heb je miss een voorbeeld script en dan dat je dat met die .htaccess toepast, ik snap er niet veel van. Ik kom steeds op een dode pagina uit als ik het zelf test
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
Tsja, goede de tutorial doorlezen. Voorbeelden staan in de tutorial, die gebruik ik zelf ook..


20 jaar geleden
 
0 +1 -0 -1
Ja oke maar waar moet de .htaccess plaatsen?

Kijk ik heb nu dit:
foto.php die staat in de map fotos
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?
if(isset($_GET['actie']) && $_GET['actie'] == "mijzelf")
{

echo "?kkeeee";
}


elseif(isset($_GET['actie']) && $_GET['actie'] == "vrienden")
{

echo "Vrieden";
}


elseif(isset($_GET['actie']) && $_GET['actie'] == "vriendinnen")
{

echo "dit zijn de vriendinnen";
}


else {
echo "Dit is dan het foto boek van RobbyTown. Hier kun je foto's van Robby vinden. En ook van zijn vrienden en vriendinnen. Ik zou zeggen veel kijk plezier.<br /><br />

<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td><b>Categorie</b></td>
    <td><b>Aantal foto's</b></td>
  </tr>
  <tr>
    <td><a href=$site_url?pagina=fotos&actie=mijzelf>Mijn zelf</a></td>
    <td>0</td>
  </tr>
  <tr>
    <td><a href=$site_url?pagina=fotos&actie=vrienden>Vrienden</a></td>
    <td>0</td>
  </tr>
  <tr>
    <td><a href=$site_url?pagina=fotos&actie=vriendinnen>Vriendinnen</a></td>
    <td>0</td>
  </tr>
</table>"
;
}

?>


En dit is me .htaccess file die staat ook in de fotos map
RewriteEngine On
RewriteRule ^fotos/foto/(.*)/ fotos/foto.php?actie=$actie
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
Je moet de .htaccess file in je root directory zetten.. Dus je .htaccess bestand plaatsen in je www directory (of whatever), en niet in een subdirectory..
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
Ook moeten deze linkjes: $site_url?pagina=fotos&actie=mijzelf veranderd worden naar: /fotos/foto/mijzelf/
De VeeWee
de VeeWee
20 jaar geleden
 
0 +1 -0 -1
bas:

RewriteEngine On
RewriteRule ^fauvee/scouts/upload/upload/(.*)/ /fauvee/scouts/upload/upload.php?func=$1
RewriteRule ^fauvee/scouts/upload/upload/(.*) /fauvee/scouts/upload/upload.php?func=$1

zo zou mijn htacces er moeten uitzien, ik heb geen chmod op de map nog op het bestand gezet... (wat zou dan een andere reden zijn voor een forbidden)
is er iets mis met hoe ik mijn site oproep via mod rewrite ofwat?

volledige url = http://members.lycos.nl/fauvee/scouts/upload/upload.php?func=iets

met rod rewrite (normaal gezien):
http://members.lycos.nl/fauvee/scouts/upload/upload/iets

(heb nu wel ff htaccess weggedaan omdat alle paginas forbidden werden)

mijn pagina met phpinfo waar ik geen apache onderdeel vind:
http://members.lycos.nl/fauvee/info.php

kan het zijn dat lycos dit niet onderstuent en daardoor de fout doorgeeft?


20 jaar geleden
 
0 +1 -0 -1
Ik ben maar ven lid geworden.

Nu heb ik de .htaccess file in de root directory gezet.
Verder he ik niets aan de file gedaan

foto.php
heb ik wel wat aangepast
<a href=$site_url?pagina=fotos&actie=mijzelf>Mijn zelf</a>
heb ik naar dit gemaakt
<a href=/fotos/foto/mijzelf/>Mijn zelf</a>

klik ik erop kom ik nog op een dode pagina uit


20 jaar geleden
 
0 +1 -0 -1
je moet ff goed lezen wat ik hier boven heb geschreven...

RewriteRule ^scouts/upload/upload/(.*)/ scouts/upload/upload.php?func=$1
RewriteRule ^scouts/upload/upload/(.*) scouts/upload/upload.php?func=$1

.htaccess file in je ROOT DIRECTORY dit is dus de map fauvee waar je waarschijnlijk meteen in zit als je naar ftp connect,

URL adressen nu dus verwijzen naar: scouts/fotos/foto/mijzelf/


20 jaar geleden
 
0 +1 -0 -1
Waar heb je het nu weer over waar is scouts/ opeens voor nodig???
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
Misschien wel.. Maar probeer dit eens:

.htaccess bestand in de map: fauvee zetten.
Dan de volgende regels in .htaccess:

RewriteRule ^scouts/upload/upload/(.*)/ scouts/upload/upload.php?func=$1
RewriteRule ^scouts/upload/upload/(.*) scouts/upload/upload.php?func=$1
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
lol, sorry, verwar veewee en jou met elkaar.. maar ehm, voor iedereen die problemen heeft, dus ook jij robby, post je .htacces file, de url die je aanroept met mod_rewrite, en zonder rewrite en vertel me wat voor problemen je hebt, NADAT je de tutorial goed hebt doorgelezen!!!!
De VeeWee
de VeeWee
20 jaar geleden
 
0 +1 -0 -1
nope, krijg nog altijd verboden gedoe, ik denk dat mod rewrite niet opstaat bij lycos ofzo..
robbie-->
<a href=$site_url?pagina=fotos&actie=mijzelf>Mijn zelf</a>
heb ik naar dit gemaakt
<a href=/fotos/foto/mijzelf/>Mijn zelf</a>

maak van die laatste link eens:
$site_url/fotos/mijzelf/ als ik da tutorial goed begrijp zou dit moeten werken denk ik :s


20 jaar geleden
 
0 +1 -0 -1
<a href=/fotos/foto/mijzelf/>Mijn zelf</a>
Dan staat er automaitsch al de url voor

@bas, de htaccess file heb ik al gepost zie mijn langste bericht
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
.htaccess bestand is fout, beter tutorial lezen:

RewriteEngine On
RewriteRule ^fotos/foto/(.*)/ fotos/foto.php?actie=$actie moet zijn

RewriteEngine On
RewriteRule ^fotos/foto/(.*)/ fotos/foto.php?actie=$1

Edit:
PS: tijd van de post staat erbij omdat ik via nieuwe website berichten post dus niet denken dat het een bug is :)
Bram Z
Bram Z
20 jaar geleden
 
0 +1 -0 -1
Kvind gewoon met get toch beter -> script?id=&cat=...
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
Dit is ook GET alleen met mooie URL adressen.. Als je de tutorial ff leest zul je zien waarvoor het makkelijker en beter is..


20 jaar geleden
 
0 +1 -0 -1
ik heb dit in mijn .htaccess

RewriteEngine On

RewriteRule ^i-girls/(.*)/ i-girls/profiel.php?p=$1
RewriteRule ^i-girls/(.*) i-girls/profiel.php?p=$1

als ik nu $_GET['p']; doe krijg ik "profiel.php"

doe ik het lijntje "RewriteRule ^i-girls/(.*) i-girls/profiel.php?p=$1" weg dan werkt het wel.. het ligt dus aan die / die er niet staat :) weet je soms hoe ik dat kan oplossen?
Miranda Verburg
Miranda Verburg
20 jaar geleden
 
0 +1 -0 -1
door beide regels in .htaccess te zetten dus:

RewriteRule ^i-girls/(.*)/ i-girls/profiel.php?p=$1
RewriteRule ^i-girls/(.*) i-girls/profiel.php?p=$1


20 jaar geleden
 
0 +1 -0 -1
Ok, ik heb dit (MOD_REWRITE is geinstalleerd!)

RewriteEngine On
RewriteRule ^test/(.*)/(.*)/ test.php?test1=$1&test2=$2
RewriteRule ^test/(.*)/(.*) test.php?test1=$1&test2=$2

en in test.php dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$test3
= $_GET['test1'];
$test4 = $_GET['test2'];
echo "<b>'$test1' '$test2' '$test3' '$test4'</b>";
?>


maar op de een of andere manier, krijg ik geen $1 en $2 door ($test1 en $test2) en de pagina ziet er ook gewoon zo uit:

'' '' '' ''

iemand enig idee wat ik fout doe?
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
raar.. zou moeten werken.. .htaccess bestand in je root staan en hem .htaccess genoemd ipv htaccess zonder punt ervoor??

En je roept je domein wel aan via: http://www.joudomein.nl/test/1/2/ ??
Eris -
Eris -
20 jaar geleden
 
0 +1 -0 -1
Ik zit nog steeds met een probleem

Mijn .htaccess code:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)$ index.php?page=$1&start=$2 [NC,L]
RewriteRule ^([a-zA-Z0-9_]*)$ index.php?page=$1 [NC,L]
ErrorDocument 404 http://www.schipbreukeling.nl/404
ErrorDocument 403 /error.php?page=403
ErrorDocument 401 /error.php?page=401
ErrorDocument 500 /error.php?page=500
IndexIgnore *

En op zich werkt het wel. Alleen dan krijg ik een probleem met de links naar mijn bestanden op de server.
Dus de stylesheets enz....
Voorbeeld http://www.schipbreukeling.nl/photo/2
Weet iemand wat ik fout doe?
Eris -
Eris -
20 jaar geleden
 
0 +1 -0 -1
Immdels heb ik een tijdelijke oplossing (Namelijk de voledige url opgegeven)


20 jaar geleden
 
0 +1 -0 -1
Ja:
http://www.leidsereddingsbrigade.nl/test/1/2

het rare is dat je wel naar de site test.php gaat, maar dat $1 en $2 niet worden meegezonden :S
Dave
Dave
19 jaar geleden
 
0 +1 -0 -1
hoe kan ik so'n mod_rewrite ding maken voor bijvoorbeeld een forward van gebruikers?

uwsite.ext/gebruiker gaat dan naar uwsite.ext/users.php?id=gebruiker

tnx
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Mss moet je daarvoor de tutorial lezen :)
Dave
Dave
19 jaar geleden
 
0 +1 -0 -1
mja
heb ik gedaan, en ik heb ook vanalles geprobeerd..
maar het lukt me gewoon niet :s

als ik het probeer..ofwel kom ik op mijn 404pagina, ofwel werkt het gewoon niet :)

iemand misschien een t?pje, of een vb'tje? :s


19 jaar geleden
 
0 +1 -0 -1
Wat is er eigenlijk het beste?

De mod rewrite methode of de explode() functie methode?

Groeten,
Ief


19 jaar geleden
 
0 +1 -0 -1
Sorry, nog een vraagje:

Kan ik met de mod rewrite methode een directory onzichtbaar maken?
Bvb: ik heb http://www.mijnsite.com/nl/artikels.htm?id=5
Veranderen in:

http://www.mijnsite.com/artikels/5/

Dus de nl weg laten?
Bas Kreleger
Bas Kreleger
19 jaar geleden
 
0 +1 -0 -1
nee vlgns mij kan dat niet .. je kunt wel iets doen zoals dit:

RewriteRule ^nieuws/ index.php

zoiets gebruik ik ook op PHPhulp, dan zeg je van, nieuws/ moet naar index.php gaan.. wat je kunt proberen is dit:

RewriteRule ^artikels/(.*)/ nl/artikels/index.php?id=$1
RewriteRule ^artikels/(.*) nl/artikels/index.php?id=$1

Ik heb het niet getest dus weet niet of het werkt, maar je kunt het proberen.. :)


19 jaar geleden
 
0 +1 -0 -1
Het werkt hoor :):)

Fantastisch


19 jaar geleden
 
0 +1 -0 -1
Ik wil het volgende:
http://www.domein.nl/?p=p&id=1

Omzetten in:
http://www.domein.nl/1

Hoe doe ik dit dan??
Eris -
Eris -
19 jaar geleden
 
0 +1 -0 -1
RewriteEngine On
RewriteRule ^/(.*) ?p=p&id=$1
Redmar
Redmar
19 jaar geleden
 
0 +1 -0 -1
Ik vind dat rewrite echt onhandig. Ik doe het zelf zo:

$var = explode('/' , $_SERVER['REQUEST_URI']);

En dat domein.nl/test/5
$var[1] geeft waarde: test
$var[2] geef waarde: 5
Micha
Micha
19 jaar geleden
 
0 +1 -0 -1
Uhm waarom werkt dat niet?
Legolas
Legolas
19 jaar geleden
 
0 +1 -0 -1
het is ook altijd handig om een (.*) te veel erachter te zetten, kun je er een iets.htm achter plaatsen vind google leuker :P
Micha
Micha
19 jaar geleden
 
0 +1 -0 -1
Maar ik heb het even geprobeerd, en krijg 403, terwijl het zonder .htaccess wel gewoon werkt..
Legolas
Legolas
19 jaar geleden
 
0 +1 -0 -1
403? dat betekent dat je geen toegang hebt...


19 jaar geleden
 
0 +1 -0 -1
Voor diegene die willen weten hoe je mod_rewrite kunt activeren in de Windows versie van Apache moeten het volgende doen:

Open het bestand httpd.conf en scroll naar het modules gedeelte.
Ga op zoek naar de volgende regel:
#LoadModule rewrite_module modules/mod_rewrite.so

Aan de # kun je zien dat deze module is uitgeschakeld. Verwijder het hekje (#) om de module te activeren. Als je dat gedaan hebt, herstart je de Apache server om de verandering toe te passen.
Bram Z
Bram Z
19 jaar geleden
 
0 +1 -0 -1
Kan je er voor zorgen dat hij alleen numbers toelaat:

RewriteRule ^patches/(.?) download_list.php?cat=patches&id=$1
Elwin - Fratsloos
Elwin - Fratsloos
19 jaar geleden
 
0 +1 -0 -1
D@rk, alleen nummers kan je toch met PHP opvangen?
is_numeric();

Elwin
Bram Z
Bram Z
19 jaar geleden
 
0 +1 -0 -1
ja, maar als het geen nummer is dat hij het leeg laat
Eris -
Eris -
19 jaar geleden
 
0 +1 -0 -1
RewriteRule ^patches/([0-9]*) download_list.php?cat=patches&id=$1
Gerben van Erkelens
Gerben van Erkelens
19 jaar geleden
 
0 +1 -0 -1
erg handige tutorial super!


19 jaar geleden
 
0 +1 -0 -1
bij mij werkt het ook nooit..
Lennard
Lennard
19 jaar geleden
 
0 +1 -0 -1
Legolas:
het is ook altijd handig om een (.*) te veel erachter te zetten, kun je er een iets.htm achter plaatsen vind google leuker :P

Hoezo? Pakt google alleen url's waar een extensie in staan??


19 jaar geleden
 
0 +1 -0 -1
Hey ik heb ook een probleemje met .htaccess
Ik probeer dus idd mod-rewrite te gebruiken maar als ik dan een url aanroep (http://www.justah.nl/index/list/ ) krijg ik mijn normale index te zien zonder CSS opmaak(GEEN 404).

.htaccess :
RewriteEngine On
RewriteRule ^index/(.*)/(.*)/ index.php?x=$1&id=$2
RewriteRule ^index/(.*)/ index.php?x=$1
Eris -
Eris -
19 jaar geleden
 
0 +1 -0 -1
Dit komt omdat je de bestanden niet van uit de root op vraagt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
if(empty($_SERVER['REDIRECT_URL'])){
$_SERVER['REDIRECT_URL'] = '';
}

$homedir = '/';
$dir = $_SERVER['REDIRECT_URL'];
$homearray = explode('/',$homedir);
$dirarray = explode('/',$dir);
$basedir = '';
for($i=1;!empty($dirarray[$i]);$i++){
if($homearray [$i] != $dirarray[$i]){
$basedir.= '../';
}
}

?>


19 jaar geleden
 
0 +1 -0 -1
Ik snap niet geheel wat je bedoeld.
Moet ik zorgen dat bij elke request de file uit het absolute pad wordt opgevraagd?
Draait btw op een Windows bak...
Eris -
Eris -
19 jaar geleden
 
0 +1 -0 -1
Als jij in je css file linkt naar file.css
Dan wordt het voor de browser
http://ww.mijndomein.nl/index/lafefe/file.css
enz..
Elwin - Fratsloos
Elwin - Fratsloos
19 jaar geleden
 
0 +1 -0 -1
Ok?... hier even een linkje voor nog een troubleshoot op dit onderwerp... Heeft mij veel tijd gekost.. :)

Elwin


19 jaar geleden
 
0 +1 -0 -1
Werkt geweldig :) Bedankt!


19 jaar geleden
 
0 +1 -0 -1
Prob!!....

Het werkt prima.. Heb het in een bestaand script geplaatst.. Ik moet echter nu wel voor mijn img's de volledige url aangeven...

normaal= src=\"img/header.jpg\"
word in browser gezien als http://domein.nl/img/header.jpg

Met de mod_rewrite voorbeeld http://domein.nl/nieuws/1/
word de img http://domein.nl/nieuws/1/img/header.jpg

Moet ik in de img tagz volledige url blijven aanhouden? of is er een andere oplossing?
Eris -
Eris -
19 jaar geleden
 
0 +1 -0 -1
Nee je kan ook links relatief maken door de /er voor te plaatsen
img/header.jpg
wordt dan /img/header.jpg
Hipska BE
Hipska BE
18 jaar geleden
 
0 +1 -0 -1
verdorie, mod_rewrite staat nergens tussen phpinfo en ik vind .htacces niet (is geen localhost)


18 jaar geleden
 
0 +1 -0 -1
.htaccess is op sommige servers een verborgen bestand :)


18 jaar geleden
 
0 +1 -0 -1
Mod-rewrite werkt best.. Alleen hoe moet je omgaan met waarden gepost worden in een formulier?? Als ik rewrite gebruik komen deze niet het $_POST array te staan..


18 jaar geleden
 
0 +1 -0 -1
Ik krijg het op mijn website niet werkend.
Krijg de 404 not found melding.
Dit staat er in mijn htaccess
RewriteEngine on
RewriteBase /
RewriteRule ^pages-(.+)\.html index.php/pages-$1 [L]

Mijn htaccess file staat in: /WWW/www.damcomputers.nl/htdocs/
Als ik mijn webwinkel www.damcomputers.nl oproep gaat dit wel goed, maar zodra ik een product aanklik krijg ik de foutmelding.
PLEASE HELP


18 jaar geleden
 
0 +1 -0 -1
RewriteEngine On
RewriteRule ^(.*)/(.*)/ profiel.php?naam=$1&actie=$2
RewriteRule ^(.*)/(.*) profiel.php?naam=$1&actie=$2
RewriteRule ^(.*)/ profiel.php?naam=$1
RewriteRule ^(.*) profiel.php?naam=$1

Zo ziet mijn htaccess file eruit.
Ze staat online in de subdir members. De bedoeling is dat hij bij members.verkom.be/dries eigelijk members.verkom.be/profiel.php?naam=dries toont, maar dat doet hij niet. Maar als ik deze in de www-dir plaats, dan doet hij dat misschien ook bij mijn gewone website, en dat mag niet.
Deze error krijg ik:
----
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@pcextreme.nl and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
----
Mod_rewrite is zeker geinstalleerd.
- Jim  -
- Jim -
18 jaar geleden
 
0 +1 -0 -1
Misschien een tip voor de mensen die er nog wat moeite mee hebben:

Maak een directory met daarin en bestand genaamd: index.php
Voer deze code daarin... Heel handig om even uit te zoeken....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
var_dump($_GET);

echo "<br />Test voor de id: <br />";
if (ISSET($_GET['id']))
 {

echo $_GET['id'];
 }
else {
echo "Geen id.";
 }


?>
- Jim  -
- Jim -
18 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?

# EXPLANATION ReWriteRules.
#
#           ^path/page/ $1 / $2 / $3 / $4 / <With(out) end-slash.
# If that page is called,  this url/page is meant:
#                                            path/page.ext?id=1&cat=$2&db=$3&table=$4
#   Where $1, $2, $3 $4 are the vars in the URL.
#
# Keep in mind, the root of the page.  Ex. /var/www/html/
#                                                        test/              * A map.
#                                                             index.php     * A file


RewriteRule ^test/index/(.*)/(.*)/(.*)/(.*)/ test/index.php?id=$1&cat=$2&db=$3&table=$4



?>


18 jaar geleden
 
0 +1 -0 -1
@dries... hier is je verbeterde versie... let op het ? die geeft aan, 0 of 1 van vorig teken...

RewriteRule ^(.*)/(.*)/? profiel.php?naam=$1&actie=$2
RewriteRule ^(.*)/? profiel.php?naam=$1
Bo az
Bo az
18 jaar geleden
 
0 +1 -0 -1
Deze tip word door Eris gegeven, om niet het volledige pad op de hoeven geven, naar bv, je paatjes in een submap.
Quote:
Nee je kan ook links relatief maken door de /er voor te plaatsen
img/header.jpg
wordt dan /img/header.jpg


als ik dat doe, dan werkt het nog steeds niet niet als ik dit doe:
http://edgar/ed/php/14/
en niet als ik dit doe:
http://edgar/ed/?page=php&id=14

dit staat in mijn .htaccess:
RewriteEngine On
RewriteRule ^php/(.*)/ index.php?page=php&id=$1

weet iemand wat ik fout doe?
Sjoerd
Sjoerd
17 jaar geleden
 
0 +1 -0 -1
Ik dacht dat de .htaccess files van boven naar beneden bekeken werden. En de eerste match gebruikt word? Als dat zo is kan ik namelijk op het einde een wildcard zetten. Dit werkt echter niet.... mijn voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteRule ^user/ index.php?mod=user
RewriteRule ^(.*)/ index.php?mod=inhoud&groep=$1


als ik naar www.mijndomein.nl/user/ surf...
Kom ik op index.php?mod=inhoud&groep=user
En dat is dus NIET te bedoeling... Wie kan het zeggen?
Derk nvt
Derk nvt
17 jaar geleden
 
0 +1 -0 -1
ze worden van boven naar beneden gelezen en volgens mij is dat precies je probleem. probeer de regeltjes eens om te draaien?
Arian Stolwijk
Arian Stolwijk
17 jaar geleden
 
0 +1 -0 -1
Hij werkt prima...
Het is wel zeer handig om dit even in de head van je pagina te zetten:\
<base href="http://www.jouwsite.nl" />
Dan blijven de links nl. intact
Something Else
Something Else
17 jaar geleden
 
0 +1 -0 -1
Ik weet nou niet als ik het hier moet posten of een topic openen in de form, probeer het hier ff ;).

Mijn links zaten altijd zo in elkaar:
http://localhost/?page=home

nu heb ik het voor elkaar gekregen om home zo op te roepen:
http://localhost/home
met de mod_rewrite, maar deze werkt als ik het handmatig intype in de url balk.

dus mijn vraag:

Moet ik ook handmatig de links veranderen in m'n pagina zelf???

mijn .htacces file, moet ik daar wat in veranderen of moet het echt handmatig??
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_]*)$ index.php?page=$1 [NC,L]
?>


tnx ;D
Eris -
Eris -
17 jaar geleden
 
0 +1 -0 -1
Je moet je links aanpassen naar /home /contact enz...
Something Else
Something Else
17 jaar geleden
 
0 +1 -0 -1
Dus toch aanpassen ;x
jammer dat nie alles automatisch gaat ;D:P

tnx btw ;D
Eris -
Eris -
17 jaar geleden
 
0 +1 -0 -1
Modrewrite heeft geen invloed op je php script / html codes..
Something Else
Something Else
17 jaar geleden
 
0 +1 -0 -1
nvm ;D srry
Erik
erik
17 jaar geleden
 
0 +1 -0 -1
ik vind dit echt heel erg moeilijk...
ik probeer al super lang met mod-rewrite me profielen systeem te updaten de links naar de leden zien er nu alsvolgt uit:

http://www.website.nl/leden/lid.php?lid=lidnaam

ik wil dus dat het zo te bezoeken is:

http://www.website.nl/lidnaam

maar na 200 testjes is dit nog niet gelukt hoe moet ik dat nu in hemels naam doen?
Michael -
Michael -
17 jaar geleden
 
0 +1 -0 -1
Dat is bekent met mod_rewrite. Er zijn echt 9999999duizend topics over mod_rewrite maar blijft soms ingewikkeld als het niet wil werken. Vaak ligt het maar aan een kleine / ofzo. Ik heb ook heel lang zitten kloten terwijl het gewoon aan 1 slash lag terwijl alle tuts het zonder hebben en mijn server dus graag met wil.
Probeer het eens zo:

RewriteEngine on
RewriteRule ^([^.?/]+)/$ leden/lid.php?lid=$1
RewriteRule ^([^.?/]+)$ leden/lid.php?lid=$1

Werkt dit niet? Zet een / voor leden. Werkt dit niet? Zet Options -MultiViews boven RewritEngine on. Werkt dit niet? Nog meer manieren blijven proberen :P

Edit:

Ps: Mod_rewrite wel geinstalleerd? Dit kun je zien in je phpinfo (zie tutorial)
[/EDIT]
PHP Newbie
PHP Newbie
17 jaar geleden
 
0 +1 -0 -1
Internal Server Error

en de hele site niet meer bereikbaar,

mijn htaccess:

RewriteEngine On
RewriteRule ^(.*) index.php?p=$1
ErrorDocument 404 /404.php
Willem Jan Z
Willem Jan Z
17 jaar geleden
 
0 +1 -0 -1
Hele URL opgeven.
PHP Newbie
PHP Newbie
17 jaar geleden
 
0 +1 -0 -1
nee, een '/' voor index.php
Crispijn -
Crispijn -
17 jaar geleden
 
0 +1 -0 -1
Ik heb even een praktisch vraagje over de mod_rewrite module

Ik heb het .htaccess bestand in mijn root folder staan. Het volgende staat er in:

Quote:
RewriteEngine On
RewriteRule ^(.*)/ logboeken/persoonlijk_logboek.php?id=$1


Wanneer ik nu www.mijnsite.nl/logboek/1/ doe krijg ik mooi mijn profiel. Wanneer ik nu www.mijnsite.nl/1/ doe krijg ik de 404 error.

Best een beetje vreemd omdat hij het bij logboek wel doet en bij logboeken niet.

Ook vreemd dat hij het dus wel goed doet wanneer hij naar een submap verwezen wordt en dat terwijl dat niet in de rewriterule staat.

Wie kan hier duidelijkheid over geven?
PHP Newbie
PHP Newbie
17 jaar geleden
 
0 +1 -0 -1
zet is een slash voor logboeken
Crispijn -
Crispijn -
17 jaar geleden
 
0 +1 -0 -1
@PHP Newbie:

Wanneer ik er een slash voor zet is de totale layout van mijn pagina weg. Wanneer ik nu www.mijnsite.nl/logboek/1/ benader krijg ik foutmelding 500. Dit is dus niet de oplossing.

ik open wel even een topic!
PHP Newbie
PHP Newbie
17 jaar geleden
 
0 +1 -0 -1
en:

RewriteRule ^(.*) /logboeken/persoonlijk_logboek.php?id=$1
Roger
Roger
17 jaar geleden
 
0 +1 -0 -1
Nette uitleg heb er veel aan gehad bedankt man.
nu zit ik met de volgende 2 vragen

vraag 1:
Alleen mijn vraag hoe kan ik precies spelen dat ik ipv van mijn userid een username kan invullen het gaat namelijk bij mij om een ledensysteem en wou graag dat gebruikers http://www.jouwebsitelink.nl/username kunnen nu nu kunnen ze dat wel maar dan moet het met userid en dat wil ik graag aanpassen weet iemand hoe

vraag 2:
Hoe komt het dat mijn design niet word weergegeven??? dus ik krijg de koude code zonder mijn css en images!
BVD
Jelmer -
Jelmer -
17 jaar geleden
 
0 +1 -0 -1
antwoord 1:
Je kan ook beiden meegeven, bijv: http://www.jouwebsitelink.nl/gebruikers/123/gebruikersnaam, waarbij je het laatste stukje 'gebruikersnaam' gewoon negeert en alleen laat dienen als extra informatie in de URL. Dit doen ze ook op tweakers.net en nu.nl.

antwoord 2:
Omdat je browser denkt dat je in de map zit die in de urls staan, en dus daar een plaatje gaat zoeken. Voorbeeld: je zit op http://domein.nl/forum/123/12-32.html en daar verwijs je naar plaatje.png. Je browser zal voor het plaatje gaan zoeken naar http://domein.nl/forum/123/plaatje.png, terwijl het gewoon in http://domein.nl/plaatje.png staat.
Oplossing: de volledige url gebruiken. Dus voortaan verwijzen naar http://domein.nl/plaatje.png, of makkelijker naar /plaatje.png (die voorgaande / geeft aan dat hij in de 'root' van het domein moet gaan zoeken)
Roger
Roger
17 jaar geleden
 
0 +1 -0 -1
Jelmer dankjewel alleen zit ik met nog wat andere problemen (meerdere profielen per gebruiker en dan word het wat ingewikkelder) maar toch bedankt ga ff kijken hoe ik het ga oplossen
Zap
zap
17 jaar geleden
 
0 +1 -0 -1
Hallo,
Ik krijg een 500.
Ik heb dit in mijn htaccess:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
RewriteEngine on
RewriteRule ^/777/ 777
RewriteRule ^/nieuws /index.php?p=article
RewriteRule ^/nieuws/([0-9]+)/ index.php?p=article&id=$1
RewriteRule ^/nieuws/([0-9]+), (.*)/ index.php?p=article&id=$1&category=$2
RewriteRule ^/777 777
RewriteRule ^/nieuws index.php?p=article
RewriteRule ^/nieuws/([0-9]+) index.php?p=article&id=$1
RewriteRule ^/nieuws/([0-9]+), (.*) index.php?p=article&id=$1&category=$2
RewriteRule ^/777/ 777
RewriteRule ^/review/ index.php?p=review
RewriteRule ^/review/([0-9]+)/ index.php?p=review&id=$1
RewriteRule ^/review/([0-9]+), (.*)/ index.php?p=review&id=$1&category=$2
RewriteRule ^/777 777
RewriteRule ^/review index.php?p=review
RewriteRule ^/review/([0-9]+) index.php?p=review&id=$1
RewriteRule ^/review/([0-9]+), (.*) index.php?p=review&id=$1&category=$2
RewriteRule ^/777/ 777
RewriteRule ^/preview/ index.php?p=review&f=p
RewriteRule ^/preview/([0-9]+)/ index.php?p=review&f=p&id=$1
RewriteRule ^/preview/([0-9]+), (.*)/ index.php?p=review&f=p&id=$1&category=$2
RewriteRule ^/777 777
RewriteRule ^/preview index.php?p=review&f=p
RewriteRule ^/preview/([0-9]+) index.php?p=review&f=p&id=$1
RewriteRule ^/preview/([0-9]+), (.*) index.php?p=review&f=p&id=$1&category=$2
RewriteRule ^/777/ 777
RewriteRule ^/profiel/ index.php?p=profiel
RewriteRule ^/profiel/(.*)/ index.php?p=profiel&id=$1
RewriteRule ^/777 777
RewriteRule ^/profiel index.php?p=profiel
RewriteRule ^/profiel/(.*) index.php?p=profiel&id=$1
RewriteRule ^/777/ 777
RewriteRule ^/wprofiel/ index.php?p=wijzigprofiel
RewriteRule ^/777 777
RewriteRule ^/wprofiel/ index.php?p=wijzigprofiel
RewriteRule ^/777/ 777
RewriteRule ^/admin/ index.php?p=admin
RewriteRule ^/admin/(.*)/ index.php?p=admin?a=$1
RewriteRule ^/777 777
RewriteRule ^/admin index.php?p=admin
RewriteRule ^/admin/(.*) index.php?p=admin?a=$1
RewriteRule ^/777/ 777
RewriteRule ^/php/(.*)/ index.php?p=$1
RewriteRule ^/777 777
RewriteRule ^/php/(.*) index.php?p=$1


de root, doet het wel dus gewoon www.mijndomain.nl maar mijndomain.nl/file.php doet het niet, of dus ok www.mijndomain.nl/777

Wat doe ik fout?

Groeten ZaP
Martin Meijer
Martin Meijer
17 jaar geleden
 
0 +1 -0 -1
Ik ben ook bezig op een nieuwe site dit toe te passen en heb ik het volgende in de .htaccess staan:

RewriteEngine On

RewriteRule ^alg/forum/ index.php?page=alg/forum/forum.php

RewriteRule ^alg/scripts/ index.php?page=alg/scripts/scripts.php

RewriteRule ^alg/tutorials/ index.php?page=alg/tuts/tutorials.php

RewriteRule ^alg/login/ index.php?page=alg/leden/login.php

RewriteRule ^alg/contact/ index.php?page=alg/inf/contact.php

Hij doet het wel, maar elke keer als ik dus op een link in het menu klik, dan is het zo dat als ik eerst naar het forum ga dat er staat:
/alg/forum/ ga ik daarna naar scripts bijvoorbeeld dan krijg ik dit:

/alg/forum/alg/scripts/

Dus dan wordt hij niet vervangen, maar komt het er gewoon extra achter te staan

Kan iemand hier een handje mee helpen?
Eris -
Eris -
17 jaar geleden
 
0 +1 -0 -1
Voor alle links een / zetten
Martin Meijer
Martin Meijer
17 jaar geleden
 
0 +1 -0 -1
:S stom :P maar toch thnx!
Marcel K
Marcel K
17 jaar geleden
 
0 +1 -0 -1
Wie kan mij svp helpen, ik heb van alles geprobeerd na de tutorial gelzen te hebben, maar het zal wel aan mij liggen uiteraard.

Wat wil ik:
http://www.mijndomein.nl/home/artikel/1 vertalen naar:
http://www.mijndomein.nl/index.php?pagina=1

mijn htaccess is als volgt:
RewriteEngine On
RewriteRule ^home/artikel/(.*) index.php?pagina=$1

Tot nu toe heb ik allerlei resultaten gezien, varierend van een 404-pagina tot een pagina zonder css-opmaak.

bij voorbaat dank voor de hulp !
Leroy Boerefijn
Leroy Boerefijn
17 jaar geleden
 
0 +1 -0 -1
het werkt bij mij wel,
alleen krijg ik geen plaatjes te zien :( (ik krijg overal de alternatieve tekst)
Leroy Boerefijn
Leroy Boerefijn
17 jaar geleden
 
0 +1 -0 -1
srry.. is nog geen 24 uur later.. maar ik snap het echt niet.. moet ik de src aanpassen??
trouwens.. de css werkt ook niet.. (extern css bestand)
maar includen werkt weer wel :?

Edit:
dit gebeurt ook als ik gewoon naar mijn homepage ga.. (zonder iets achter de / )
en als ik mijn .htaccess verwijder zie ik alles wel gewoon goed!
Ponzi
Ponzi
17 jaar geleden
 
0 +1 -0 -1
Misschien wat laat, maar toch bedankt voor deze goede tutorial. Heb hem zojuist met succes op m'n weblog toegepast ;-) !
Yordi B
Yordi B
17 jaar geleden
 
0 +1 -0 -1
misschien late reactie maar waarom werkt css niet ?

voor rest wel goede tut
Robin Albers
Robin Albers
16 jaar geleden
 
0 +1 -0 -1
Hoe werkt deze funcie met een subdomein?
Martijn
Martijn
16 jaar geleden
 
0 +1 -0 -1
Vergeet niet dat de rewrite regels in goede volgorde moeten staan in het .htaccess bestand, bijv:

RewriteEngine On
RewriteRule ^index/(.*)/(.*)/ index.php?p=$1&id=$2
RewriteRule ^index/(.*)/ index.php?p=$1

..en dus niet zo...

RewriteEngine On
RewriteRule ^index/(.*)/ index.php?p=$1
RewriteRule ^index/(.*)/(.*)/ index.php?p=$1&id=$2


..dan pakt de server namelijk alleen de eerste rewrite, en niet meer de andere. Beetje lastig om uit te leggen, maar kort gezegd, altijd de langste rewrite bovenaan. Veel mensen kwamen hiermee in de problemen, een probleem van niet goed lezen ;]
Mark Pieper
Mark Pieper
16 jaar geleden
 
0 +1 -0 -1
Edit: kheb het al gevonden, ik moest het aanzetten.
Frank -
Frank -
16 jaar geleden
 
0 +1 -0 -1
Is een instelling van Apache, zie de handleiding.
JeffreyG
JeffreyG
16 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*) index.php?$1=$2

ik moest de RewriteCond regel toevoegen omdat hij anders alles meenam, inclusief de plaatjes en stylesheet e.d.
dus voor degene die hetzelfde probleem als ik hadden :)
Mnqehz
mnqehz
16 jaar geleden
 
0 +1 -0 -1
Waarom doet een geinclude functie het niet als ik rewritemod gebruik, en wel als ik geen rewritemod gebruik? ;<

/edit ff wat duidelijk, volgens mij ligt de fout bij het feit dat ik cookies opvraag, aangeizn de functie het wel doet, maar niet klopt zeg maar. :)
Mnqehz
mnqehz
16 jaar geleden
 
0 +1 -0 -1
*bump*
Bas Kreleger
Bas Kreleger
16 jaar geleden
 
0 +1 -0 -1
Stel je vraag anders even compleet incl. je .htaccess op het forum.
Envy
Envy
16 jaar geleden
 
0 +1 -0 -1
Ik werk met xampp en heb de mod_rewrite geactiveerd en de .conf aangepast.

Nu ben ik aan het werken in een submap "test" in de "htdocs" map.
In die map staan dus alle bestanden voor een kleine website.
Ik heb de .htaccess in de map "test" geplaatst en ook in de "htdocs" maar blijkt dus niet te werken.

Dit staat in mijn .htaccess:

RewriteEngine On
RewriteRule ^test/(.*)/ index.php?value=$1

Hopelijk kan iemand me helpen. Bedankt
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
Karel Janssens
Karel Janssens
15 jaar geleden
 
0 +1 -0 -1
'k Zou een specifieke mod rewrite nodig hebben maar k weet niet hoe ik eraan moet beginnen :-( Alle hulp is welkom?

1)
/pictures/ and everything below this directory: no rewrite

2)
/assets/ and everything below this directory: no rewrite

3)
/sales/ and everything below this directory: no rewrite

4)
/***.php no rewrite

5)
/white/$action/$id rewrite to /white.php?id=$id&action=$action


examples

1/2/3)
http://www.domain.tld/pictures to /pictures
http://www.domain.tld/pictures/pic1.jpg to /pictures/pic1.jpg
http://www.domain.tld/pictures/dir1/pic1.jpg to /pictures/dir1/pic1.jpg
http://www.domain.tld/pictures/dir2/pic1.jpg to /pictures/dir2/pic1.jpg

4)
http://www.domain.tld/test.php to /test.php
http://www.domain.tld/pic.php to /pic.php
http://www.domain.tld/other.php to /other.php

5)
http://www.domain.tld/white/search/toyota to /mod.php?type=white&action=search&id=toyota
http://www.domain.tld/white/My toyota is a great car/toyota to

/mod.php?type=white&action="My toyota is a great car"&id=toyota

Do I actually need the quotes '"' in the second example? I rather not convert it

urlencode-style, it's to let searchengines deal better with the pages.
Joren de Wit
Joren de Wit
15 jaar geleden
 
0 +1 -0 -1
Welke wil je nu? Wil je doorverwijzen naar white.php of naar mod.php?type=white?

Uitgaande van het tweede heb je maar een rewrite rule nodig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
RewriteEngine On
RewriteBase /
RewriteRule ^white/(.*?)/(.*?)/$ mod.php?type=white&action=$1&id=$2 [L]

Let erop dat in bovenstaande de url wel met een / afgesloten moet worden.
Karel Janssens
Karel Janssens
15 jaar geleden
 
0 +1 -0 -1
Bedankt al voor de snelle reactie!

Ik zou alles per default niet willen doorsturen

(1/2/3/4) wil ik dus onbehandeld ontvangen, maar

(5) zou ik naar de desbetreffende mod.php willen diverten.
in dit geval zijn er meerdere rewrites nodig
bv /white maar ook /black en /green

Alles dient dus ongemoeid gelaten te worden, enkel de opgesomden in (5) zouden moeten gerewrited worden.

Die 'L' op het einde baart me dus zorgen in jouw voorbeeld. Wat betekent 'L'ast hier precies?
Ad
Ad
15 jaar geleden
 
0 +1 -0 -1
Is het ook mogelijk om je adres van bijvoorbeeld:

http://www.mijndomein.nl/blog/post.php?id=1

naar

http://www.mijndomein.nl/blog/eindpresentatie

te krijgen? Zou iemand mij dit uit kunnen leggen? Dus dat hij de titel van het bericht geeft ipv id=1

Bedankt!
Joren de Wit
Joren de Wit
15 jaar geleden
 
0 +1 -0 -1
Dan zou je dus met de titel van een bericht als GET variabele moeten werken, dit is niet aan te raden. Wat je wel zou kunnen doen is naast het id ook de titel van het bericht in de url kunnen zetten. Met behulp van mod-rewrite zorg je dan dat het id als GET variabele omgeschreven wordt en de titel negeer je dan verder. Die gebruik je alleen voor de show.

Het is overigens met mod-rewrite niet mogelijk om een id om te zetten naar een titel, daar zal toch echt PHP aan te pas moeten komen...
Ad
Ad
15 jaar geleden
 
0 +1 -0 -1
Oke dat is duidelijk.
Dan zou het dus dit worden:

http://www.mijndomein.nl/blog/2/eindpresentatie

Tot zover duidelijk. Dan heb ik nog een vraag. Als een titel bijvoorbeeld 'Dit is mijn blog' zou heten. Zorgt hij automatisch voor het veranderen van hoofdletters en spaties? Want de url zou dan zoiets moeten zijn lijkt me:

http://www.mijndomein.nl/blog/3/dit-is-mijn-blog/
Joren de Wit
Joren de Wit
15 jaar geleden
 
0 +1 -0 -1
Nee, dat zul je met PHP moeten doen. Functies als str_replace() en strtolower() zijn je vriend...
Ad
Ad
15 jaar geleden
 
0 +1 -0 -1
Oke, bedankt voor je snelle reacties. Ik moet er zo wel uit komen.
Tom
Tom
15 jaar geleden
 
0 +1 -0 -1
Kan iemand mij helpen?

Ik bouw mijn menu op door een array. Met Mod_rewrite wordt ik er echter niet veel wijzer uit nu...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
            <?php
               $aPages
= array('Item1', 'Item2', 'Item3', 'Item4, 'Item5'); // De pagina's in die in het menu moeten verschijnen
                                                                            
               foreach($aPages as $page){
               $current = ((!empty($_GET['pagina']) && in_array($_GET['pagina'], $aPages) && $_GET['pagina'] == $page) || (!isset($_GET['pagina']) && $page == 'Item1'))? ' class="current"':'';
               echo '<li'.$current.'><a href="?pagina='.$page.'">'.$page.'</a></li>'.PHP_EOL;
              }

            ?>


De .htacces heb ik momenteel alsvolgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
RewriteEngine on

RewriteRule ^/(.*)/?$ ?pagina=$1 [L]


Hoe ga ik het nu werkend krijgen? Ik loop zelf namenlijk een beetje vast. Het redirecten dmv .htacces werkt wel, alleen het probleem is dat ik mijn hele menu dus met een array opbouw.

Iemand de oplossing? En zijn er mensen hier die daar ervaringen mee hebben?
Joren de Wit
Joren de Wit
15 jaar geleden
 
0 +1 -0 -1
Een kwestie van de echo van regel 6 wijzigen zodat de links van de menu items naar de juiste url verwijzen?
Tom
Tom
15 jaar geleden
 
0 +1 -0 -1
Als het zo makkelijk ging was hij al afgweest :p

Bij mij werkt het niet hoor... Niemand ervaring met een dynamisch menu icm mod_rewrite?
Joren de Wit
Joren de Wit
15 jaar geleden
 
0 +1 -0 -1
Het dynamische menu heeft niets te maken met mod-rewrite...

Met mod-rewrite zorg je ervoor dat je urls kunt gebruiken die er een stuk aangenamer uitzien en die beter te lezen zijn door bijvoorbeeld zoekmachines. De rewrite engine pikt deze 'mooie' urls op en stuurt ze onzichtbaar door naar de eigenlijke urls.

De urls waar jij in je menu naar moet linken zijn dus die mooie urls. Maar hoe jij dat voor elkaar krijgt staat helemaal los van de mod-rewrite, dat is puur een kwestie van het juiste echo?n van de html code voor de links.

Kortom, zoek eens uit waar het fout gaat (bij het genereren van de urls, of het rewriten ervan), pas dan weet je waar je de fout moet gaan zoeken en oplossen.
Tom
Tom
15 jaar geleden
 
0 +1 -0 -1
Dat is waar, en het is me ook bijna gelukt.

Alleen dan link ik bijv naar pagina/'.$page.' en dan ben je dus op www.domein.nl/pagina/home en de link word dan: www.domein.nl/pagina/home/pagina/info

dat is natuurlijk niet de bedoeling, zal ik hiervoor de GET aan moeten passen? Iemand die me een stukje hulp kan geven?
Joren de Wit
Joren de Wit
15 jaar geleden
 
0 +1 -0 -1
Link dan naar /pagina/'.$page.', dan gaat het waarschijnlijk wel goed...
Erwin Nieuwenhuis
Erwin Nieuwenhuis
15 jaar geleden
 
0 +1 -0 -1
mijn .htaccess ziet er zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteEngine On
RewriteRule ^(.*)/ index.php?page=$1


en als ik naar de pagina http://www.mijnsite.nl/leden ga, stuurt hij me netjes door naar http://www.mijnsite.nl/index.php?page=leden

maar dan laad hij mij afbeeldingen niet, ik zie enkel de tekst en daar waar plaatjes horen een paar lijntjes en kruisjes

maar als ik de locatie van mijn afbeelding verander van

achtergrond.jpg

naar

http://www.mijnsite.nl/achtergrond.jpg

doet hij het wel..

moet ik nu alle afbeelding op deze manier gaan linken of is er een andere manier??
Ferdi R
Ferdi R
15 jaar geleden
 
0 +1 -0 -1
Zet eens alleen een / voor achtergrond.jpg.
Dus /achtergrond.jpg
Ferdi R
Ferdi R
15 jaar geleden
 
0 +1 -0 -1
Het lukt me al aardig.

Maar hoe kan ik deze link veranderen?
/script/radio%20v2

In:
/script/radio_v2.html

Dit staat in mijn htaccess:

RewriteRule ^script/(.*)/ script.php?id=$1
RewriteRule ^script/(.*) script.php?id=$1

EDIT:
html heb ik al voor elkaar:

RewriteRule ^script/(.*)/ script.php?id=$1
RewriteRule ^script/(.*).html script.php?id=$1

Hij laat nu dit zien:

/script/radio%20v2.html

Maar hoe krijg ik die %20 verandert in _

EDIT 2:
Aah ik ben erachter gekomen.
str_replace(" ","_",$row->scriptnaam);
Niels
Niels
15 jaar geleden
 
0 +1 -0 -1
Ik ben ook bezig geweest met mod_rewrite. Het lukte me maar steeds niet om het simpele webadres http://www.domeinnaam.nl?pagina=home om te zetten in http://www.domeinnaam.nl/home. Nu kan het aan mij liggen maar uit alle informatie en reacties in dit artikel is het mij niet gelukt het gewenste resultaat te bereiken. Terwijl je volgens mij het beste bij de basis kan beginnen.

Uiteindelijk ben ik verder gaan zoeken en kwam ik uiteindelijk op een andere (duidelijkere) tut.

Voor de mensen die toch nog aan het stoeien zijn met dit probleem en graag de basis willen begrijpen, dit is mij uiteindelijke oplossing.

Zet in de .htaccess file:


Options +FollowSymLinks

RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9-]+)$ ?pagina=$1


Op deze code je natuurlijk voortbouwen, maar dit is de basis.
C Z
C Z
15 jaar geleden
 
0 +1 -0 -1
Misschien slim om meerdere voorbeelden te geven om SEO vriendelijke url's te maken? Of zet in je tutorial meer links neer naar andere sites waarop duidelijke (eventueel Engelse) uitleg te vinden is!
Sander hueting
sander hueting
15 jaar geleden
 
0 +1 -0 -1
Ik ben multiviews aan het proberen op mijn website, dit werkt. Enige probleem waar ik tegenaan loop http://www.indigio.nl/indigio

Zit dat hem in de domeinnaam? En moet ik de variabele dan aanpassen (/indigio) of is er een manier om dat te omzeilen?

Groet sander
--
--
15 jaar geleden
 
0 +1 -0 -1
Je kunt misschien beter even een topic openen omdat je daar meer reacties zal krijgen.
Thijs
thijs
14 jaar geleden
 
0 +1 -0 -1
hoi,

Heeft al iemand gevonden hoe je dit toe past bij een subdomein?

Ik heb het nu toegepast op mijn site http://www.shaxxers.com/lyrics/

nu wil ik ook http://lyrics.shaxxers.com gebruiken, maar krijg een foutmelding (500 internal server error)

Heeft iemand hier een oplossing voor?

mvg,
Thijs
Jorg
Jorg
14 jaar geleden
 
0 +1 -0 -1
Hoi,

Ik heb een probleem in mijn .htaccess met de RewriteRule module waar ik niet uit kom.

De bedoeling is dat een URL als bijv. www.website.nl/webshop/Boeken-3/ vervangen wordt door www.website.nl/webshop/home.php?cat=3

Het einde van de directory moet dus verwijzen naar de category.
Nu kan de URL van de directory ook bijv. worden /CD-Platen-5/

Inmiddels heb ik de volgende code, waardoor ik directory /3/ wel kan zien als home.php?cat=3.
Maar hoe krijg ik het gedeelte voor het getal weggehaald?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^([a-zA-Z0-9\-]+)/?$ /webshop/home.php?cat=$1 [NC,QSA,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule .*\/([^\.]+\.(:?php|html|htm))$ $1 [NC,QSA,L]
</IfModule>[/CODE]
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Matthijs M
Matthijs M
11 jaar geleden
 
0 +1 -0 -1
Geweldige tutorial, rustig doorlopen, goed kijken en heel precies schrijven en je komt er uit!

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Voorbereidingen
  2. URL vriendelijke pagina's maken
  3. Voorkomende problemen

Labels

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.