URL Vriendelijkheid (SEO)
Hoe maak je URL vriendelijk, netjes en toonbaar.
Gesponsorde koppelingen
Inhoudsopgave
35 reacties op 'URL Vriendelijkheid (SEO)'
Gesponsorde koppelingen
Aardige tutorial, maar er zijn nog een aantal verbeterpunten.
Daarnaast ben ik voorstander van het gebruik van conditions binnen .htaccess. Hiermee kan je de functionaliteit van deze tutorial ook (netjes) zonder mod_rewrite realiseren.
Tenslotte zou ik het splitsen van de URL OOP aanpakken, maar dat is wellicht te hoog gegrepen voor deze tutorial.
EDIT: PHP is hier veel handiger dan htaccess, zeker als je gaat kijken naar het specificeren van dynamische URLs door middel van configuratiebestanden.
Quote:
NC is overbodig. Persoonlijk gebruik ik de OR ook niet. Dit volstaat:RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteCond %{REQUEST_FILENAME} -d [NC]
Quote:
Hierbij opgemerkt dat dit niet altijd het gewenste gedrag is. Als je alle bestanden nog in de public directory plaatst, kan dit zelfs zeer gevaarlijk zijn.RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-d
Daarnaast ben ik voorstander van het gebruik van conditions binnen .htaccess. Hiermee kan je de functionaliteit van deze tutorial ook (netjes) zonder mod_rewrite realiseren.
Tenslotte zou ik het splitsen van de URL OOP aanpakken, maar dat is wellicht te hoog gegrepen voor deze tutorial.
EDIT: PHP is hier veel handiger dan htaccess, zeker als je gaat kijken naar het specificeren van dynamische URLs door middel van configuratiebestanden.
@Donhertog:
Volgens mij niet, hoor. Je blijft dan altijd hangen bij een maximaal aantal parameters.
@Agirre:
Dankje. Ik heb die regels van Blanche' tutorial over mod_rewrite. Zelf heb ik er bar weinig verstand van hoe het precies in elkaar zit. Ik weet dat dat werkt, en dat gebruik ik het liefst dan ook. Misschien klinkt dat dom, maar ik wil iets dat werkt, ik weet dat dit werkt, dus ik gebruik het zo ; ).
Het splitsen van de URL met OOP is denk ik te ingewikkeld voor het script. Je hebt maar ??n functie nodig om het allemaal al te regelen, waarom dan een hele klasse gaan schrijven?
@Jurgen:
Dankje, ik wilde het zo makkelijk mogelijk houden ; ).
Volgens mij niet, hoor. Je blijft dan altijd hangen bij een maximaal aantal parameters.
@Agirre:
Dankje. Ik heb die regels van Blanche' tutorial over mod_rewrite. Zelf heb ik er bar weinig verstand van hoe het precies in elkaar zit. Ik weet dat dat werkt, en dat gebruik ik het liefst dan ook. Misschien klinkt dat dom, maar ik wil iets dat werkt, ik weet dat dit werkt, dus ik gebruik het zo ; ).
Het splitsen van de URL met OOP is denk ik te ingewikkeld voor het script. Je hebt maar ??n functie nodig om het allemaal al te regelen, waarom dan een hele klasse gaan schrijven?
@Jurgen:
Dankje, ik wilde het zo makkelijk mogelijk houden ; ).
@Danny: $_SERVER variabelen zijn wat mij betreft niet te vertrouwen : P. Overigens zal dat niet veel verschillen, je zult toch iets moeten doen om te zorgen dat de .htaccess niet bestaande mappen constructies (die je dan probeert op te vragen) op te vangen en er iets mee doen. Veel zal het niet verschillen, maar als jij vindt van wel, ga je gang : ).
Trouwens, als je slashes als zijnde parameters gebruikt, komen die dan wel in de QUERY_STRING? Volgens mij geldt dat alleen voor ? en & parameters. Je zult dan nog alles naar ??n $_GET moeten zetten.
@Leon: Dan zul je nog meer explode werk nodig hebben, denk ik dan. Overigens geldt hier hetzelfde als wat ik tegen Danny zeg hierboven.
@thomas: Geef je errors eens, dan kunnen we je misschien beter helpen : ).
Trouwens, als je slashes als zijnde parameters gebruikt, komen die dan wel in de QUERY_STRING? Volgens mij geldt dat alleen voor ? en & parameters. Je zult dan nog alles naar ??n $_GET moeten zetten.
@Leon: Dan zul je nog meer explode werk nodig hebben, denk ik dan. Overigens geldt hier hetzelfde als wat ik tegen Danny zeg hierboven.
@thomas: Geef je errors eens, dan kunnen we je misschien beter helpen : ).
@Jezpur
Dat is het probleem als ik errors zou krijgen dan zou ik het zelf oplossen
maar het script geeft geen errors weer de adress balk blijft hetzelfde
Ik kan wel dit zeggen miscchien dat dit het probleem is
Ik heb een index pagina daar staan 2 links in
de ene is duiven.php?id=home&taal=nl
de ander is duiven.php?id=home&taal=eng
Als ik daar op klik dan komt er in de adress balk de link te staan.
de content heb ik toegevoegd aan duiven.php is dit goed of moet dit aan index.php toegevoegd worden.
Met vriendelijke groet Thomas de vries.
P.s. Is een handig script als ik hem aan de praat heb xD
Dat is het probleem als ik errors zou krijgen dan zou ik het zelf oplossen
maar het script geeft geen errors weer de adress balk blijft hetzelfde
Ik kan wel dit zeggen miscchien dat dit het probleem is
Ik heb een index pagina daar staan 2 links in
de ene is duiven.php?id=home&taal=nl
de ander is duiven.php?id=home&taal=eng
Als ik daar op klik dan komt er in de adress balk de link te staan.
de content heb ik toegevoegd aan duiven.php is dit goed of moet dit aan index.php toegevoegd worden.
Met vriendelijke groet Thomas de vries.
P.s. Is een handig script als ik hem aan de praat heb xD
Ik neem aan dat je de .htaccess hebt opgeslagen en hebt ge?pload? Als dat zo is, dan moet ik even weten hoe je website in elkaar zit. Include je je pagina's in index.php of in duiven.php? Wat bevat index.php en duiven.php? Overigens zullen de links die jij geeft niet meer werken zodra je dit script gebruikt. In de tutorial kun je lezen dat het dan zo gaat worden: /duiven/id=home/taal=nl/ Als duiven.php niet ge?nclude wordt, moet je in de .htaccess even index.php veranderen in duiven.php.
Maar leg nu eerst maar even uit hoe je website in elkaar zit : ).
Maar leg nu eerst maar even uit hoe je website in elkaar zit : ).
In dat geval niet. Dan zouden de links zo moeten worden: /id=home/taal=nl/, want duiven.php roep je automatisch al aan (daar stuur je de parameters al heen). Als je nu dit doet:
op duiven.php zou je toch al wel wat parameters moeten krijgen? (voor en na het script)
op duiven.php zou je toch al wel wat parameters moeten krijgen? (voor en na het script)
Als ik dat doe en ik roep de pagina rechstreeks zo op
www.duivensport.cjb.net/duiven/id=home/taal=nl
dan geeft ie de images niet weer. en helemaal bovenaan geeft ie dit weer.
array(1) { ["id"]=> string(23) "duiven/id=home/taal=eng" }
Wat betekent dit
www.duivensport.cjb.net/duiven/id=home/taal=nl
dan geeft ie de images niet weer. en helemaal bovenaan geeft ie dit weer.
array(1) { ["id"]=> string(23) "duiven/id=home/taal=eng" }
Wat betekent dit
Je hoeft duiven er niet tussen te zetten, want daar komt ie automatisch al. Nu zal duiven in $_GET['p'] komen.
De images klopt, dat moet ik nog in de tutorial zetten! Dankje dat je daar even tegenaan loopt :P.
Als het goed is het je nu de var_dump($_GET) v??r het script staan? Als je hem nu eens n? het script zet, dan zul je als het goed is zien dat de parameters op zn plek in de $_GET-array zitten.
De images klopt, dat moet ik nog in de tutorial zetten! Dankje dat je daar even tegenaan loopt :P.
Als het goed is het je nu de var_dump($_GET) v??r het script staan? Als je hem nu eens n? het script zet, dan zul je als het goed is zien dat de parameters op zn plek in de $_GET-array zitten.
Bij deze heb ik het probleem opgelost hij doet nu wat ie moet doen.
Alleen ik loop nu tegen het volgende aan.
ik zit namelijk met 2 talen. NL en ENG.
nu is mijn duiven.php zo opgebouwd waar die de home en andere pagina's include.
En mijn volgende bestanden zitten zo
Home.php
Maar nu pakt ie alleen engels omdat de link niet meer zo is.
duiven.php?id=home&taal=nl
kan dit kloppen?
P.s. met de images heb ik nu zo staan
<img src="/images/banner1.jpg">
I.P.V.
<img src="images/banner1.jpg">
Alleen ik loop nu tegen het volgende aan.
ik zit namelijk met 2 talen. NL en ENG.
nu is mijn duiven.php zo opgebouwd waar die de home en andere pagina's include.
Code (php)
En mijn volgende bestanden zitten zo
Home.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
mysql_connect (localhost,root,****);
mysql_select_db (duiven);
$sql = "SELECT home_nl, home_eng FROM home";
$query = mysql_query($sql);
while ($taal = mysql_fetch_array($query))
{
if($_GET['taal'] == "nl")
{
echo $taal['home_nl'];
}else{
echo $taal['home_eng'];
}
}
?>
mysql_connect (localhost,root,****);
mysql_select_db (duiven);
$sql = "SELECT home_nl, home_eng FROM home";
$query = mysql_query($sql);
while ($taal = mysql_fetch_array($query))
{
if($_GET['taal'] == "nl")
{
echo $taal['home_nl'];
}else{
echo $taal['home_eng'];
}
}
?>
Maar nu pakt ie alleen engels omdat de link niet meer zo is.
duiven.php?id=home&taal=nl
kan dit kloppen?
P.s. met de images heb ik nu zo staan
<img src="/images/banner1.jpg">
I.P.V.
<img src="images/banner1.jpg">
Wat nou als je niet vanuit de root werkt omdat je elders ontwikkeld, zeg in de directory test/? Dan krijg je een rare opbouw van je urls, ofwel je doet iets als: $path . "model/controller/ of je bouwt het statisch (test/page) maar dan kan je als je van directory wisselt alle urls ombouwen. Met / krijg je dat die de urls opbouwt dus /test/page/page/page/ Of is er nog een andere oplossing?
De url is http://www.duivensport.cjb.net
Dit geeft ie weer aan het einde van de duiven.php
array(1) { ["id"]=> string(15) "id=home/taal=nl" }
Bij deze is alles opgelost ipv van $_GET['id']
Stond het nog op $_GET['p']
Alles werkt nu heel erg bedankt. mooie tut xD
Dit geeft ie weer aan het einde van de duiven.php
array(1) { ["id"]=> string(15) "id=home/taal=nl" }
Bij deze is alles opgelost ipv van $_GET['id']
Stond het nog op $_GET['p']
Alles werkt nu heel erg bedankt. mooie tut xD
Oh, toch wel :). Ik vond het al zo vreemd.
@Rik: Ik werk dan ook meestal met een constante - SITEURL - waarin ik het absolute pad zet. Dan kun je kleine wijzigingen meteen doorvoeren. Ik laat iedereen daar helemaal vrij in, want ik wil daarin niemand mijn mening opdringen. Dat mag men zelf bepalen ;).
@Rik: Ik werk dan ook meestal met een constante - SITEURL - waarin ik het absolute pad zet. Dan kun je kleine wijzigingen meteen doorvoeren. Ik laat iedereen daar helemaal vrij in, want ik wil daarin niemand mijn mening opdringen. Dat mag men zelf bepalen ;).
@Jochem: Nu werkt dat wel. Heb de flag 'QSA' uitgevonden en toegepast en dat werkt. Het enige wat je hoeft te doen is bij de regel onder 'Overige RewriteRules onder deze regel' [L,QSA] achter te zetten. De L is nog een extraatje, wat ik eigenlijk vergeten was bij de vorige. Het geeft aan dat dat de laatste regel is in de rewrite.
Er zijn verder geen wijzigingen in het PHP script nodig! :)
Er zijn verder geen wijzigingen in het PHP script nodig! :)
Wellicht wil je wel een 404 raisen als een voorliggende directory wel bestaat.
op b.v. /static/css/bestaatniet.css wil je wel een 404 raisen, dat moet zo ongeveer werken;
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$2 !-d
RewriteRule [^/]+(/?([^/]+)*) /index.php
op b.v. /static/css/bestaatniet.css wil je wel een 404 raisen, dat moet zo ongeveer werken;
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$2 !-d
RewriteRule [^/]+(/?([^/]+)*) /index.php
Ok ik ben het helemaal kwijt.
Ik heb de htacces aangemaakt.
Wat moet ik nu dan als pagescript gebruiken??
Want ik heb nu:
http://www.fleischer.nl
En als ik nu de map algemeen en pagina home wil oproepen wordt de link:
algemeen/home/
hoe krijg ik dat nu geinclude dan???
Ik heb de htacces aangemaakt.
Wat moet ik nu dan als pagescript gebruiken??
Want ik heb nu:
http://www.fleischer.nl
En als ik nu de map algemeen en pagina home wil oproepen wordt de link:
algemeen/home/
hoe krijg ik dat nu geinclude dan???
Als je met /algemeen/home/ wilt gaan werken dan kun je dat doen als volgt:
Wanneer je dit zult uitvoeren, dan gaat hij dus naar je root /index.php?show=algemeen&page=home
Dat kun je gebruiken als
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteCond %{SCRIPT_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^([^/]+)/([^/]+)/$ index.php?show=$1&page=$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteCond %{SCRIPT_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^([^/]+)/([^/]+)/$ index.php?show=$1&page=$2
Wanneer je dit zult uitvoeren, dan gaat hij dus naar je root /index.php?show=algemeen&page=home
Dat kun je gebruiken als
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
Jesper Diovo- 3 jaar geleden
- 3.077 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP tutorials opties
- Overig
- Nieuwste PHP tutorials
- PHP tutorial toevoegen

PHP hulp
0 seconden vanaf nu