[.htaccess] URL Rewrite
zarko - 02/05/2006 14:14
Nieuw 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:
RewriteRule ^groepen.html$ index2.php?p=groepen [L]
RewriteRule ^spelers/([0-9]*)/(.+).html$ index2.php?p=spelers/speler&id=$1&$2 [L]
RewriteRule ^clubs/([0-9]*)/(.+).html$ index2.php?p=clubs/club&id=$1&$2 [L]
RewriteRule ^nieuws/([0-9]*)/(.+).html$ index2.php?p=nieuws/nieuws&id=$1&$2 [L]
RewriteRule ^steden/([0-9]*)/(.+).html$ index2.php?p=steden/steden-uitgebreid&id=$1&$2 [L]
RewriteRule ^groepen. html$ index2. php?p= groepen [ L]
RewriteRule ^spelers/ ( [ 0 - 9 ] * ) / ( .+ ) . html$ index2. php?p= spelers/ speler& id= $1 & $2 [ L]
RewriteRule ^clubs/ ( [ 0 - 9 ] * ) / ( .+ ) . html$ index2. php?p= clubs/ club& id= $1 & $2 [ L]
RewriteRule ^nieuws/ ( [ 0 - 9 ] * ) / ( .+ ) . html$ index2. php?p= nieuws/ nieuws& id= $1 & $2 [ L]
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:
<a href="index2.php?p=nieuws/nieuws&id=<? echo "".$list->id.""; ?>"><? echo "".$list->titel.""; ?></a>
<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
ikkedikke - 02/05/2006 14:32
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?
ikkedikke - 02/05/2006 14:38
PHP expert
werkt dit wel?
tis mijn goede kant ook niet en ben toch wel benieuwd;-)
RelatedHack - 02/05/2006 14:43
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 :-)
zarko - 02/05/2006 14:45
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
ikkedikke - 02/05/2006 14:50
PHP expert
heb je wel de regel
RewriteEngine on
ergens in je configuratie staan ?
zarko - 02/05/2006 14:51
Nieuw lid
Ja dat heb ik, ik heb 't .htaccess bestand in de root geplaatst!
RelatedHack - 02/05/2006 14:58 (laatste wijziging 02/05/2006 15:04)
Onbekend
Ben er nog niet uit...
Maar beveilig je HTACCES bestand ook maar tege mnsen die het willen lezen...
AuthUserFile /dev/null
AuthGroupFile /dev/null
RewriteEngine On
RewriteCond %{HTTP_REFERER} !>http://www.example1.com [NC]
RewriteCond %{HTTP_REFERER} !>http://example1.com [NC]
RewriteCond %{HTTP_REFERER} !>http://www.example2.com [NC]
RewriteCond %{HTTP_REFERER} !>http://www.example3.com [NC]
RewriteCond %{HTTP_REFERER} !>http://123.123.123.123 [NC]
RewriteRule /* http://www.example.com/index.html [R,L]
AuthUserFile / dev/ null
AuthGroupFile / dev/ null
RewriteEngine On
RewriteCond % { HTTP_REFERER} !> http: //www.example1.com [NC]
RewriteCond % { HTTP_REFERER} !> http: //example1.com [NC]
RewriteCond % { HTTP_REFERER} !> http: //www.example2.com [NC]
RewriteCond % { HTTP_REFERER} !> http: //www.example3.com [NC]
RewriteCond % { HTTP_REFERER} !> http: //123.123.123.123 [NC]
RewriteRule /* http://www.example.com/index.html [R,L]
zarko - 02/05/2006 15:02
Nieuw lid
Ik snap niet echt waarvoor die code dient:
Hier alle codes die in die file site in de root:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^wk-duitsland2006.nl$ [NC]
RewriteRule ^(.*)$ http://www.wkduitsland-2006.nl/ [R=301,L]
RewriteCond %{HTTP_HOST} ^wkduitsland-2006.nl$ [NC]
RewriteRule ^(.*)$ http://www.wkduitsland-2006.nl/ [R=301,L]
RewriteCond %{HTTP_HOST} ^www.wk-duitsland2006.nl$ [NC]
RewriteRule ^(.*)$ http://www.wkduitsland-2006.nl/ [R=301,L]
RewriteRule ^groepen.html$ index2.php?p=groepen [L]
RewriteRule ^spelers/([0-9]*)/(.+).html$ index2.php?p=spelers/speler&id=$1&$2 [L]
RewriteRule ^clubs/([0-9]*)/(.+).html$ index2.php?p=clubs/club&id=$1&$2 [L]
RewriteRule ^nieuws/nieuws/(.+).html$ index2.php?p=nieuws/nieuws&id=$1&$2 [L]
RewriteRule ^steden/([0-9]*)/(.+).html$ index2.php?p=steden/steden-uitgebreid&id=$1&$2 [L]
RewriteEngine On
RewriteCond % { HTTP_HOST} ^wk- duitsland2006. nl$ [ NC]
RewriteRule ^( .* ) $ http: //www.wkduitsland-2006.nl/ [R=301,L]
RewriteCond % { HTTP_HOST} ^wkduitsland- 2006. nl$ [ NC]
RewriteRule ^( .* ) $ http: //www.wkduitsland-2006.nl/ [R=301,L]
RewriteCond % { HTTP_HOST} ^www. wk- duitsland2006. nl$ [ NC]
RewriteRule ^( .* ) $ http: //www.wkduitsland-2006.nl/ [R=301,L]
RewriteRule ^groepen. html$ index2. php?p= groepen [ L]
RewriteRule ^spelers/ ( [ 0 - 9 ] * ) / ( .+ ) . html$ index2. php?p= spelers/ speler& id= $1 & $2 [ L]
RewriteRule ^clubs/ ( [ 0 - 9 ] * ) / ( .+ ) . html$ index2. php?p= clubs/ club& id= $1 & $2 [ L]
RewriteRule ^nieuws/ nieuws/ ( .+ ) . html$ index2. php?p= nieuws/ nieuws& id= $1 & $2 [ L]
RewriteRule ^steden/ ( [ 0 - 9 ] * ) / ( .+ ) . html$ index2. php?p= steden/ steden- uitgebreid& id= $1 & $2 [ L]
RelatedHack - 02/05/2006 15:08 (laatste wijziging 02/05/2006 15:10)
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 ?
zarko - 02/05/2006 16:09
Nieuw lid
Die [R,L] heeft ook geen effect, en hoe bedoel je redirecten?
Thomas - 02/05/2006 16:23
Moderator
Draait je webserver wel Apache?
zarko - 02/05/2006 17:06 (laatste wijziging 02/05/2006 17:18)
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,-
Simon - 02/05/2006 21:01
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...
Maarten - 02/05/2006 22:58
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.
zarko - 02/05/2006 23:50
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:
<a href="index2.php/nieuws/<? echo "".$list->id.""; ?>/<? echo "".$list->titel.""; ?>.html"><? echo "".$list->titel.""; ?></a>
<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!:(
BramBo - 03/05/2006 11:31
JS gevorderde
ik zou ten eerste even :
<base href="http://www.domein.nl" />
< base href= "http://www.domein.nl" />
definieren
verder kan je dit proberen :
RewriteEngine On
RewriteBase /
RewriteRule ^spelers/([0123456789]*)/(.*).html$ index2.php?p=spelers/speler&id=$1&$2 [NC]
RewriteRule ^clubs/([0123456789]*)/(.*).html$ index2.php?p=clubs/club&id=$1&$2 [NC]
RewriteRule ^nieuws/([0123456789]*)/(.*).html$ index2.php?p=nieuws/nieuws&id=$1&$2 [NC]
RewriteRule ^steden/([0123456789]*)/(.*).html$ index2.php?p=steden/steden-uitgebreid&id=$1&$2 [NC]
RewriteEngine On
RewriteBase /
RewriteRule ^spelers/ ( [ 0123456789 ] * ) / ( .* ) . html$ index2. php?p= spelers/ speler& id= $1 & $2 [ NC]
RewriteRule ^clubs/ ( [ 0123456789 ] * ) / ( .* ) . html$ index2. php?p= clubs/ club& id= $1 & $2 [ NC]
RewriteRule ^nieuws/ ( [ 0123456789 ] * ) / ( .* ) . html$ index2. php?p= nieuws/ nieuws& id= $1 & $2 [ NC]
RewriteRule ^steden/ ( [ 0123456789 ] * ) / ( .* ) . html$ index2. php?p= steden/ steden- uitgebreid& id= $1 & $2 [ NC]
zarko - 05/05/2006 21:59
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:\
ikkedikke - 05/05/2006 23:18
PHP expert
moet het niet "^/nieuws/..." zijn ipv "^nieuws/..." ?
zarko - 06/05/2006 00:52 (laatste wijziging 06/05/2006 00:55)
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:
<table width="100%" cellpadding="3" cellspacing="2">
<tr>
<td valign="top"><b>Nieuws headlines</b></td>
</tr>
<?
include("includes/config.php");
// Stel hier de kleuren in die je wenst bij de achtergrondkleuren van de tabellen (om en om !)
$kleur1 ="";
$kleur2 ="hl";
$query = mysql_query("SELECT * FROM nieuws ORDER BY id DESC");
while($list = mysql_fetch_object($query)) {
$titel = str_replace(" ", "-", $list->titel);
$titel2 = htmlentities($titel);
$kleur = ($i++ % 2) ? "$kleur1" : "$kleur2";
?>
<tr>
<td class="<? echo "".$kleur.""; ?>"><a href="nieuws/<? echo "".$list->id.""; ?>/<? echo $titel2; ?>.html"><? echo "".$list->titel.""; ?></a></td>
</tr>
<?
}
?>
</table>
<table width="100%" cellpadding="3" cellspacing="2">
<tr>
<td valign="top"><b>Nieuws headlines</b></td>
</tr>
<?
include ( "includes/config.php" ) ;
// Stel hier de kleuren in die je wenst bij de achtergrondkleuren van de tabellen (om en om !)
$kleur1 = "" ;
$kleur2 = "hl" ;
$query = mysql_query ( "SELECT * FROM nieuws ORDER BY id DESC" ) ; $kleur = ( $i ++ % 2 ) ? "$kleur1 " : "$kleur2 " ;
?>
<tr>
<td class="
<? echo "" . $kleur . "" ; ?> "><a href="nieuws/
<? echo "" . $list -> id . "" ; ?> /
<? echo $titel2 ; ?> .html">
<? echo "" . $list -> titel . "" ; ?> </a></td>
</tr>
<?
}
?>
</table>
Simon - 06/05/2006 11:09
PHP expert
RewriteEngine On
RewriteRule ^spelers/([0123456789]*)/(.+).html$ index2.php?p=spelers/speler&id=$1&$2 [NC]
RewriteRule ^clubs/([0123456789]*)/(.+).html$ index2.php?p=clubs/club&id=$1&$2 [NC]
RewriteRule ^nieuws/([0123456789]*)/(.+).html$ index2.php?p=nieuws/nieuws&id=$1&$2 [NC]
RewriteRule ^steden/([0123456789]*)/(.+).html$ index2.php?p=steden/steden-uitgebreid&id=$1&$2 [NC]
RewriteEngine On
RewriteRule ^spelers/ ( [ 0123456789 ] * ) / ( .+ ) . html$ index2. php?p= spelers/ speler& id= $1 & $2 [ NC]
RewriteRule ^clubs/ ( [ 0123456789 ] * ) / ( .+ ) . html$ index2. php?p= clubs/ club& id= $1 & $2 [ NC]
RewriteRule ^nieuws/ ( [ 0123456789 ] * ) / ( .+ ) . html$ index2. php?p= nieuws/ nieuws& id= $1 & $2 [ NC]
RewriteRule ^steden/ ( [ 0123456789 ] * ) / ( .+ ) . html$ index2. php?p= steden/ steden- uitgebreid& id= $1 & $2 [ NC]
ik denk dat de fout zit bij
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
RewriteRule ^spelers/([0123456789]*)/(.+).html$ index2.php?p=spelers/speler&id=//1&pag=//2 [NC]
RewriteRule ^clubs/([0123456789]*)/(.+).html$ index2.php?p=clubs/club&id=//1&pag=//2 [NC]
RewriteRule ^nieuws/([0123456789]*)/(.+).html$ index2.php?p=nieuws/nieuws&id=//1&pag=//2 [NC]
RewriteRule ^steden/([0123456789]*)/(.+).html$ index2.php?p=steden/steden-uitgebreid&id=//1&pag=//2 [NC]
RewriteRule ^spelers/ ( [ 0123456789 ] * ) / ( .+ ) . html$ index2. php?p= spelers/ speler& id= //1&pag=//2 [NC]
RewriteRule ^clubs/ ( [ 0123456789 ] * ) / ( .+ ) . html$ index2. php?p= clubs/ club& id= //1&pag=//2 [NC]
RewriteRule ^nieuws/ ( [ 0123456789 ] * ) / ( .+ ) . html$ index2. php?p= nieuws/ nieuws& id= //1&pag=//2 [NC]
RewriteRule ^steden/ ( [ 0123456789 ] * ) / ( .+ ) . html$ index2. php?p= steden/ steden- uitgebreid& id= //1&pag=//2 [NC]
en over je scriptje
<tr>
<td class="<?=$kleur?>"><a href="nieuws/<?=$list->id?>/<?=$titel2?>.html"><?=$list->titel?></a></td>
</tr>
<tr>
<td class="<?= $kleur ?> "><a href="nieuws/<?= $list -> id ?> /<?= $titel2 ?> .html"><?= $list -> titel ?> </a></td>
</tr>
ikkedikke - 06/05/2006 12:52
PHP expert
probeer eens in je script
<pre><?
var_dump($GLOBALS);
echo "\n\n";
var_dump($_SERVER);
?></pre>
en kijk of de variabelen wel bestaan ?
bij mij werkte de code die je in htaccess hebt staan wel nl.
zarko - 06/05/2006 14:25 (laatste wijziging 06/05/2006 14:38)
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!
Wim - 06/05/2006 14:47
Crew algemeen
Zet dit in je .htaccess:
Options Indexes FollowSymLinks MultiViews All
Options Indexes FollowSymLinks MultiViews All
Om alles erachter op te vragen:
<?php
$id = substr($_SERVER[PATH_INFO], 1);
if(!is_numeric($id)) {
$tpl->newBlock('fake_id');
$global->endpage();
}
?>
<?php
$id = substr ( $_SERVER [ PATH_INFO
] , 1 ) ; $tpl -> newBlock ( 'fake_id' ) ;
$global -> endpage ( ) ;
}
?>
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...
zarko - 06/05/2006 15:33 (laatste wijziging 06/05/2006 20:45)
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:
<?
$pad = ''; // slash als laatste teken
// Alternatieve _GET var opbouwen
if(!empty($_SERVER['PATH_INFO']))
{
$_aGET = substr($_SERVER['PATH_INFO'], 1);
$_aGET = explode('/', $_aGET);
}
if(file_exists($pad . $_aGET[0] . '.php'))
{
include $pad . $_aGET[0] . '.php';
}
else
{
$string = "$_aGET[0]";
$titel = str_replace("-", " ", $string);
$titel = str_replace(".html", "", $titel);
}
include ("includes/config.php");
?>
<?
$query = mysql_query("SELECT * FROM nieuws WHERE titel = '$spel'");
if(mysql_num_rows($query) == '0')
{
echo "Dit nieuwsbericht is niet gevonden of bestaat niet!"; }
while($list = mysql_fetch_object($query)) {
$bericht = $list->bericht;
include("includes/ubb.php");
?>
<?
$pad = '' ; // slash als laatste teken
// Alternatieve _GET var opbouwen
if ( ! empty ( $_SERVER [ 'PATH_INFO' ] ) ) {
$_aGET = substr ( $_SERVER [ 'PATH_INFO' ] , 1 ) ; }
{
include $pad . $_aGET [ 0 ] . '.php' ;
}
else
{
$string = "$_aGET[0] " ;
}
include ( "includes/config.php" ) ;
?>
<?
$query = mysql_query ( "SELECT * FROM nieuws WHERE titel = '$spel '" ) ; {
echo "Dit nieuwsbericht is niet gevonden of bestaat niet!" ; } $bericht = $list -> bericht ;
include ( "includes/ubb.php" ) ;
?>
En het nieuwsbericht laat ik dan zo zien:
Wat heb ik fout gedaan?
Edit:
Zie de link: http://www.wkdu...WK%22.html
Wim - 06/05/2006 21:07
Crew algemeen
echo $_SERVER['PATH_INFO'];
welke output levert dat?
zarko - 06/05/2006 21:40
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 .