login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[.htaccess] URL Rewrite

Offline zarko - 02/05/2006 14:14
Avatar van zarkoNieuw lid Ik geb de volgende code om mijn URL via .htaccess te herschrijven, op zich niets mis met de code, alleen telekens als ik mijn URL zelf aanpas werkt het niet.

Iemand die de URL voor mij wel goed kan herschrijven?

De .htaccess-code:
  1. RewriteRule ^groepen.html$ index2.php?p=groepen [L]
  2. RewriteRule ^spelers/([0-9]*)/(.+).html$ index2.php?p=spelers/speler&id=$1&$2 [L]
  3. RewriteRule ^clubs/([0-9]*)/(.+).html$ index2.php?p=clubs/club&id=$1&$2 [L]
  4. RewriteRule ^nieuws/([0-9]*)/(.+).html$ index2.php?p=nieuws/nieuws&id=$1&$2 [L]
  5. RewriteRule ^steden/([0-9]*)/(.+).html$ index2.php?p=steden/steden-uitgebreid&id=$1&$2 [L]


Zo vorm ik de URL's nu, en dit moet ik dan omzetten/herschrijven:
  1. <a href="index2.php?p=nieuws/nieuws&id=<? echo "".$list->id.""; ?>"><? echo "".$list->titel.""; ?></a>



Ik wil de link zo formuleren:
www.site.nl/nieuws/nieuws/01234.html

of

www.site.nl/nieuws/nieuws/titel+van+het+bericht.html


Wie ó wie kan mij verder op weg helpen?

30 antwoorden

Gesponsorde links
Offline ikkedikke - 02/05/2006 14:32
Avatar van ikkedikke PHP expert moet het dan niet
^/nieuws/nieuws/([0-9]*).html$
en
^/nieuws/nieuws/(.*).html$
zijn?
de eerste regel voor het numerieke id en de 2e voor de alfanummerieke titel.
als ik het me goed herinner staat een + voor 0 of 1 keer het voorafgaande toch?

Offline zarko - 02/05/2006 14:37
Avatar van zarko Nieuw lid Ik weet het niet .htaccess is niet mijn sterke kant! Heb 't ook via een zoektochtje gevonden!:p 
Offline ikkedikke - 02/05/2006 14:38
Avatar van ikkedikke PHP expert werkt dit wel?
tis mijn goede kant ook niet en ben toch wel benieuwd;-)
Offline RelatedHack - 02/05/2006 14:43
Avatar van RelatedHack Onbekend Via HTACCESS zou het inderdaad zo kunnen werken IKKE.....
Maar ik vrees dat als je de URL aanpast weer hetzelfde probleem gaat krijgen...
Ik hoop voor Zarko dat dit toch werkt...anders zullen we moeten voorzoeken...
ik zal in ieder geval eens nagaan of het zou kunnen kloppen :-)
Offline zarko - 02/05/2006 14:45
Avatar van zarko Nieuw lid Dat zal werkt niet echt, want je moet eerst die link zelf zo herschrijven dat het werkt.

Ik gebruik zeg maar nu deze code om een link aan te maken:

<a href="index2.php?p=nieuws/nieuws&id=<? echo "".$list->id.""; ?>"><? echo "".$list->titel.""; ?></a>

Bekijk het hier eens: http://www.wkdu.../headlines

en als je dan een link maakt als volgt dan werkt het niet:
http://www.wkdu...ws/38.html

of

http://www.wkdu...ws/38.html
Offline ikkedikke - 02/05/2006 14:50
Avatar van ikkedikke PHP expert heb je wel de regel
RewriteEngine on
ergens in je configuratie staan ?
Offline zarko - 02/05/2006 14:51
Avatar van zarko Nieuw lid Ja dat heb ik, ik heb 't .htaccess bestand in de root geplaatst!
Offline RelatedHack - 02/05/2006 14:58 (laatste wijziging 02/05/2006 15:04)
Avatar van RelatedHack Onbekend Ben er nog niet uit...

Maar beveilig je HTACCES bestand ook maar tege mnsen die het willen lezen...

  1. AuthUserFile /dev/null
  2. AuthGroupFile /dev/null
  3. RewriteEngine On
  4. RewriteCond %{HTTP_REFERER} !>http://www.example1.com [NC]
  5. RewriteCond %{HTTP_REFERER} !>http://example1.com [NC]
  6. RewriteCond %{HTTP_REFERER} !>http://www.example2.com [NC]
  7. RewriteCond %{HTTP_REFERER} !>http://www.example3.com [NC]
  8. RewriteCond %{HTTP_REFERER} !>http://123.123.123.123 [NC]
  9. RewriteRule /* http://www.example.com/index.html [R,L]
Offline zarko - 02/05/2006 15:02
Avatar van zarko Nieuw lid Ik snap niet echt waarvoor die code dient:

Hier alle codes die in die file site in de root:
  1. RewriteEngine On
  2. RewriteCond %{HTTP_HOST} ^wk-duitsland2006.nl$ [NC]
  3. RewriteRule ^(.*)$ http://www.wkduitsland-2006.nl/ [R=301,L]
  4.  
  5. RewriteCond %{HTTP_HOST} ^wkduitsland-2006.nl$ [NC]
  6. RewriteRule ^(.*)$ http://www.wkduitsland-2006.nl/ [R=301,L]
  7.  
  8. RewriteCond %{HTTP_HOST} ^www.wk-duitsland2006.nl$ [NC]
  9. RewriteRule ^(.*)$ http://www.wkduitsland-2006.nl/ [R=301,L]
  10.  
  11. RewriteRule ^groepen.html$ index2.php?p=groepen [L]
  12. RewriteRule ^spelers/([0-9]*)/(.+).html$ index2.php?p=spelers/speler&id=$1&$2 [L]
  13. RewriteRule ^clubs/([0-9]*)/(.+).html$ index2.php?p=clubs/club&id=$1&$2 [L]
  14. RewriteRule ^nieuws/nieuws/(.+).html$ index2.php?p=nieuws/nieuws&id=$1&$2 [L]
  15. RewriteRule ^steden/([0-9]*)/(.+).html$ index2.php?p=steden/steden-uitgebreid&id=$1&$2 [L]
Offline RelatedHack - 02/05/2006 15:08 (laatste wijziging 02/05/2006 15:10)
Avatar van RelatedHack Onbekend probeer eens in plaats van [L] dit te zetten [R,L] en probeer dan nog eens opnieuw...

In principe probeer je gewoon te redirecten ?
Of begrijp ik het verkeerd ?
Offline zarko - 02/05/2006 16:09
Avatar van zarko Nieuw lid Die [R,L] heeft ook geen effect, en hoe bedoel je redirecten?
Offline Thomas - 02/05/2006 16:23
Avatar van Thomas Moderator Draait je webserver wel Apache?
Offline zarko - 02/05/2006 17:06 (laatste wijziging 02/05/2006 17:18)
Avatar van zarko Nieuw lid Jazeker! Anders werkte die redirect toch niet!

Edit:
Is er ieamnd die het wel kan oplossen, zodat het wel correct werkt? Ik ben bereid er een kleine vergoeding voor neer te tellen, denk aan o.a. €10,-
Offline Maarten - 02/05/2006 19:40 (laatste wijziging 02/05/2006 19:41)
Avatar van Maarten Erelid Ok, die ([0-9]*) moet ([0-9]+) en (.+) moet (.*) worden 

KBC Bank > 476-9054451-78



Nee, deze site is en blijft vrijwilligerswerk, en niemand hoort een vergoeding te ontvangen voor het oplossen van andermans problemen. Ik zou het dus apprecieren moest niemand met geld lopen gooien om een probleem sneller opgelost te krijgen.

De URL moet dan overigens
site.be/nieuws/567896/hier-bijvoorbeeld-de-titel.html
Offline Simon - 02/05/2006 21:01
Avatar van Simon PHP expert @murfy, wat als er geen tussenmap is? dus geen cijfers? dan werkt dat niet, dat * was goed bij [0-9]; en .+ betekent dat er meerdere tekens MOETEN zijn vóór .html, en .* betekent van er nul of meerdere, nouja, dat is wat ik ervan denk...
Offline Maarten - 02/05/2006 22:58
Avatar van Maarten Erelid Dan moet je ? gebruiken, m.a.w. dat het deel optioneel is.
En als je een beetje snugger bent vorm je je urls als volgt:
/nieuws/idvanhetnieuwsbericht/titelvanhetnieuwsbericht

Gevolg -> in je coding kan je met het ID werken, wat de kans op conflicten aanzienlijk vermindert, en google is ook tevreden want er staan trefwoorden in je URL.
Offline zarko - 02/05/2006 23:50
Avatar van zarko Nieuw lid Oke ik begin nou eindelijk de betekenins van al die tekens van .htaccess ook te begrijpen!

Ik heb zeg maar het volegnde hoe de URL wordt gevormd:
  1. <a href="index2.php/nieuws/<? echo "".$list->id.""; ?>/<? echo "".$list->titel.""; ?>.html"><? echo "".$list->titel.""; ?></a>


Zie: http://www.wkdu.../headlines voor de voorbeelden

Maar het werkt helaas nog steeds niet!:(
Offline BramBo - 03/05/2006 11:31
Avatar van BramBo JS gevorderde ik zou ten eerste even :
  1. <base href="http://www.domein.nl" />
definieren

verder kan je dit proberen :

  1. RewriteEngine On
  2. RewriteBase /
  3.  
  4. RewriteRule ^spelers/([0123456789]*)/(.*).html$ index2.php?p=spelers/speler&id=$1&$2 [NC]
  5. RewriteRule ^clubs/([0123456789]*)/(.*).html$ index2.php?p=clubs/club&id=$1&$2 [NC]
  6. RewriteRule ^nieuws/([0123456789]*)/(.*).html$ index2.php?p=nieuws/nieuws&id=$1&$2 [NC]
  7. RewriteRule ^steden/([0123456789]*)/(.*).html$ index2.php?p=steden/steden-uitgebreid&id=$1&$2 [NC]
Offline zarko - 05/05/2006 21:59
Avatar van zarko Nieuw lid Nee het probleem blijft zich voordoen, zie: http://www.wkdu...et-WK.html

Dan komt er te staan dat de link niet is gevonden!

Iemand nog verdere ideën? Ik weet t echt niet meer:\
Offline ikkedikke - 05/05/2006 23:18
Avatar van ikkedikke PHP expert moet het niet "^/nieuws/..." zijn ipv "^nieuws/..." ?
Offline zarko - 06/05/2006 00:52 (laatste wijziging 06/05/2006 00:55)
Avatar van zarko Nieuw lid
Citaat:
moet het niet "^/nieuws/..." zijn ipv "^nieuws/..." ?


Weer hetzelfde "zooi"!:'(

Edit:
Misschien dat het aan de scripting op de pagina zelf ligt aangezien niet echt een duidelijke oplossing naar voren komt. Al denk ik niet dat het aan de scripting ligt, maar voor de zekerheid hier de code:
  1. <table width="100%" cellpadding="3" cellspacing="2">
  2. <tr>
  3. <td valign="top"><b>Nieuws headlines</b></td>
  4. </tr>
  5. <?
  6. include("includes/config.php");
  7. // Stel hier de kleuren in die je wenst bij de achtergrondkleuren van de tabellen (om en om !)
  8. $kleur1 ="";
  9. $kleur2 ="hl";
  10. $query = mysql_query("SELECT * FROM nieuws ORDER BY id DESC");
  11. while($list = mysql_fetch_object($query)) {
  12. $titel = str_replace(" ", "-", $list->titel);
  13. $titel2 = htmlentities($titel);
  14. $kleur = ($i++ % 2) ? "$kleur1" : "$kleur2";
  15. ?>
  16. <tr>
  17. <td class="<? echo "".$kleur.""; ?>"><a href="nieuws/<? echo "".$list->id.""; ?>/<? echo $titel2; ?>.html"><? echo "".$list->titel.""; ?></a></td>
  18. </tr>
  19. <?
  20. }
  21. ?>
  22. </table>
Offline Simon - 06/05/2006 11:09
Avatar van Simon PHP expert
  1. RewriteEngine On
  2.  
  3. RewriteRule ^spelers/([0123456789]*)/(.+).html$ index2.php?p=spelers/speler&id=$1&$2 [NC]
  4. RewriteRule ^clubs/([0123456789]*)/(.+).html$ index2.php?p=clubs/club&id=$1&$2 [NC]
  5. RewriteRule ^nieuws/([0123456789]*)/(.+).html$ index2.php?p=nieuws/nieuws&id=$1&$2 [NC]
  6. RewriteRule ^steden/([0123456789]*)/(.+).html$ index2.php?p=steden/steden-uitgebreid&id=$1&$2 [NC]

ik denk dat de fout zit bij
  1. id=$1&$2

dat vind ik op zich nogal raar... mss iets als id=$1&pag=$2
maar ik vind die $ in htaccess vreemd, normaal wordt dat gebruikt om het einde aan te duiden
probeer eens
  1. RewriteRule ^spelers/([0123456789]*)/(.+).html$ index2.php?p=spelers/speler&id=//1&pag=//2 [NC]
  2. RewriteRule ^clubs/([0123456789]*)/(.+).html$ index2.php?p=clubs/club&id=//1&pag=//2 [NC]
  3. RewriteRule ^nieuws/([0123456789]*)/(.+).html$ index2.php?p=nieuws/nieuws&id=//1&pag=//2 [NC]
  4. RewriteRule ^steden/([0123456789]*)/(.+).html$ index2.php?p=steden/steden-uitgebreid&id=//1&pag=//2 [NC]

en over je scriptje
  1. <tr>
  2. <td class="<?=$kleur?>"><a href="nieuws/<?=$list->id?>/<?=$titel2?>.html"><?=$list->titel?></a></td>
  3. </tr>
Offline ikkedikke - 06/05/2006 12:52
Avatar van ikkedikke PHP expert probeer eens in je script
  1. <pre><?
  2. var_dump($GLOBALS);
  3. echo "\n\n";
  4. var_dump($_SERVER);
  5. ?></pre>

en kijk of de variabelen wel bestaan ?

bij mij werkte de code die je in htaccess hebt staan wel nl.
Offline zarko - 06/05/2006 14:25 (laatste wijziging 06/05/2006 14:38)
Avatar van zarko Nieuw lid @Simon, het mag weer eens niet baten, m.a.w. het werkt ook niet!

@ikkedikke, ik ben geen expert in PHP, dus sta niet een beetje raar te kijken van mijn vragen,;-) maar ik krijg een hele breiwerk van tekst als ik de code helemaal onderaan plaatste, of bedoelde je dat ik het in de script zelf moest verwerken, zo ja, waar moet ik het plaatsen?

Edit: Iemand die mij snel van het probleeem af wilt helpen, kan mij toevoegen op msn [aa] pimpgames.nl

Wil je er iets voor terug, is ook geen probleem!
Offline Wim - 06/05/2006 14:47
Avatar van Wim Crew algemeen Zet dit in je .htaccess:
  1. Options Indexes FollowSymLinks MultiViews All


Om alles erachter op te vragen:
  1. <?php
  2. $id = substr($_SERVER[PATH_INFO], 1);
  3. if(!is_numeric($id)) {
  4. $tpl->newBlock('fake_id');
  5. $global->endpage();
  6. }
  7. ?>


http://jedomein.tld/dir/file.php?id=1
wordt dan:
http://jedomein.tld/dir/file/1

uiteraard kan je meerdere dingen toevoegen... de extentie .php mag ook blijven, maar deze mag je weglaten (mooier).

Dit lijkt me veel simpeler...
Offline zarko - 06/05/2006 15:33 (laatste wijziging 06/05/2006 20:45)
Avatar van zarko Nieuw lid Ook weer helaas!:'(

Edit:
Er is mij in ieder wel iets gelukt en dat is dat ik nu wel de pagina bereik maar het nieuwsbericht wordt niet weergegeven maar ik krijg nu mijn errror dat ik heb gemaakt als er geen nieuwsbericht is gevonden ook hierbij te zien:

Na een beetje speurwerk op o.a. google heb ik wel iets gevonden en de code er extra bijgezet maar het wil nog steeds niet werken.

De fout ligt nu volgens mij op de nieuws-pagina zelf en niet meer in de .htaccess, zie de code:

  1. <?
  2. $pad = ''; // slash als laatste teken
  3.  
  4. // Alternatieve _GET var opbouwen
  5. if(!empty($_SERVER['PATH_INFO']))
  6. {
  7. $_aGET = substr($_SERVER['PATH_INFO'], 1);
  8. $_aGET = explode('/', $_aGET);
  9. }
  10.  
  11. if(file_exists($pad . $_aGET[0] . '.php'))
  12. {
  13. include $pad . $_aGET[0] . '.php';
  14. }
  15. else
  16. {
  17. $string = "$_aGET[0]";
  18. $titel = str_replace("-", " ", $string);
  19. $titel = str_replace(".html", "", $titel);
  20. }
  21.  
  22. include ("includes/config.php");
  23. ?>
  24. <?
  25.  
  26. $query = mysql_query("SELECT * FROM nieuws WHERE titel = '$spel'");
  27. if(mysql_num_rows($query) == '0')
  28. {
  29. echo "Dit nieuwsbericht is niet gevonden of bestaat niet!"; }
  30. while($list = mysql_fetch_object($query)) {
  31. $bericht = $list->bericht;
  32. include("includes/ubb.php");
  33. ?>


En het nieuwsbericht laat ik dan zo zien:
  1. <? echo $bericht; ?>


Wat heb ik fout gedaan?

Edit:
Zie de link: http://www.wkdu...WK%22.html
Offline Wim - 06/05/2006 21:07
Avatar van Wim Crew algemeen echo $_SERVER['PATH_INFO'];

welke output levert dat?
Offline zarko - 06/05/2006 21:12
Avatar van zarko Nieuw lid Dezelfde foutmelding blijft, zie: http://www.wkduitsland-2006.nl/nieuws.php
Offline Wim - 06/05/2006 21:16
Avatar van Wim Crew algemeen /38/\"Kalou-kan-nog-naar-het-WK\".html

38 = id?

+ use stripslashes($var) 
Offline zarko - 06/05/2006 21:40
Avatar van zarko Nieuw lid @Wimmarien, wat bedoel je nou precies? Als je bedoelt dat die fout veroorzaakt wordt door die "\", waarom zie ik het nieuwsbericht dan niet hier: http://www.wkdu...nbaar.html

en ik heb die stripslashes(); ingebouwd!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.344s