Ik ben bezig met een website waarvan ik de urls zoekmachine vriendelijk wil maken. De url is nu als volgt: http://www.domein.nl/templates/newsitem.php?dit-is-een-nieuwsitem en ik wil deze graag als volgt: http://www.domein.nl/nieuws/dit-is-een-nieuwsitem.html
Iemand een idee?
- Vriendelijke urls
-
22-03-2013, 20:10 #1Particulier
- Berichten
- 1.477
- Lid sinds
- 16 Jaar
Vriendelijke urls
-
In de schijnwerper
-
22-03-2013, 20:11 #2
- Berichten
- 2.610
- Lid sinds
- 15 Jaar
Re: Vriendelijke urls
-
23-03-2013, 13:28 #3Particulier
- Berichten
- 1.477
- Lid sinds
- 16 Jaar
Re: Vriendelijke urls
Ik heb nu het volgende, maar zodra ik .html wil toevoegen, gaat het mis.
Code:RewriteEngine On RewriteBase / RewriteRule ^nieuws/(.*)$.html templates/newsitem.php?title=$1 RewriteRule nieuws.html templates/news.php
-
23-03-2013, 13:39 #4
- Berichten
- 1.901
- Lid sinds
- 18 Jaar
Re: Vriendelijke urls
.html moet voor de $, het dollarteken geeft het einde van de expressie aan, dus:
^nieuws/(.*).html$
Verder is het ook verstandig om de L-flag op het einde toe te voegen, dan stopt de htaccess met verder zoeken naar mogelijke matches:
RewriteRule ^nieuws/(.*).html$ templates/newsitem.php?title=$1 [L]
Overigens kun je (.*) ook door een iets specifieke variant vervangen, ervan uit gaande dat de SEO titel alleen uit cijfers, letters en _ en - tekens bestaat:
RewriteRule ^nieuws/([a-zA-Z0-9_-]+).html$ templates/newsitem.php?title=$1 [L]
-
23-03-2013, 13:50 #5
- Berichten
- 258
- Lid sinds
- 11 Jaar
Re: Vriendelijke urls
Met WordPress is dit gewoon in te stellen.
Voorbeeld
-
23-03-2013, 14:20 #6Particulier
- Berichten
- 1.477
- Lid sinds
- 16 Jaar
Re: Vriendelijke urls
Ik heb nu het volgende wat prima werkt:
Code:RewriteEngine On RewriteBase / RewriteRule ^nieuws/(.*).html$ templates/newsitem.php?title=$1 RewriteRule ^nieuws.html$ templates/news.php
Code:RewriteEngine On RewriteBase / RewriteRule ^(.*).html$ templates/page.php?name=$1 RewriteRule ^nieuws/(.*).html$ templates/newsitem.php?title=$1 RewriteRule ^nieuws.html$ templates/news.php
-
23-03-2013, 14:36 #7
- Berichten
- 1.901
- Lid sinds
- 18 Jaar
Re: Vriendelijke urls
Dat is logisch, want (.*).html is een volledige wildcard t/m .html, wat dus inhoud dat ook nieuws/test.html onder die regel valt en hij doorverwijst naar templates/page.php?name=nieuws/test
Je moet het logisch opbouwen en de minst voorkomende regels eerst, dus:
1) Het nieuwsitem zelf
2) De nieuws homepage
3) Alle andere paginas
De juiste volgorde is dus:
RewriteRule ^nieuws/(.*).html$ templates/newsitem.php?title=$1 [L]
RewriteRule ^nieuws.html$ templates/news.php [L]
RewriteRule ^(.*).html$ templates/page.php?name=$1 [L]
Zoals ik al zei, gebruik de [L] flag ("Last"), als hij dan een match vind gaat ie niet meer verder met zoeken. Als je nog met andere parameters in de URL werkt (bijvoorbeeld ?page=3 of ?sort=title) dan kun je ook nog "QSA" (Query String Attached) toevoegen, zodat deze parameters bruikbaar blijven vanuit je script, het wordt dan [L,QSA]
Zoals ik verder nog zei, probeer het zo specifiek mogelijk te maken zodat je minder ruimte hebt voor fouten. Onder andere aangeven welke karakters je kunt verwachten is al een optie:
(.*) = wildcard (alles)
([a-z]) = a-z (lowercase)
([A-Z]) = A-Z (uppercase)
([0-9]) = Numeriek
([_-]) = de tekens _ en -
Verder zag je bij mij nog een plusje staan, bijvoorbeeld ([0-9]+), zonder het plusje wordt maar 1 teken herkend bijvoorbeeld:
RewriteRule ^test/([0-9]).html$ test.php?cijfer=$1 [L]
Als je 0 tot 9 invult werkt ie, maar bij 10 niet meer terwijl je dit wel verwacht. Door het plusje geef je aan dat er meerdere karakters uit de reeks kunnen voorkomen, zo werkt 10 dus wel en a9 weer niet bijvoorbeeld.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic