Ik ben al een paar uur bezig om een nieuwe website van mij werkend te krijgen.
De pagina is als volgt: index.php?cat=naamcategorie&m=idbestaandeuitletter sencijfers
Dit wilde ik dus herschrijven naar een wat duidelijkere URL. Mijn .htaccess:
Het is dus de bedoeling dat het music/naamcategorie/idbestaandeuitlettersencijfers wordt.Code:RewriteEngine On RewriteRule ^music/(.*)/(.*)/ index.php?cat=$1&m=$2 RewriteRule ^music/(.*)/(.*) index.php?cat=$1&m=$2 RewriteRule ^music/(.*)/ index.php?cat=$1 RewriteRule ^music/(.*) index.php?cat=$1
Wat is er nu precies fout? Nou, als ik music/naamcategorie intypt werkt het niet, terwijl music/naamcategorie/ wel werkt. Ik wil dat er achter music/naamcategorie automatisch een / gezet wordt, maar dat lukt me dus op geen enkele manier (ook niet met het bovenstaande .htaccess bestand).
Heeft iemand enig idee?
- Mod rewrite en /
-
23-01-2011, 20:00 #1
- Berichten
- 1.044
- Lid sinds
- 16 Jaar
Mod rewrite en /
-
-
23-01-2011, 22:03 #2
Elephant Media GbR
- Berichten
- 1.253
- Lid sinds
- 18 Jaar
Re: Mod rewrite en /
Ik denk dat je beter een heel andere structuur kan gebruiken
Code:RewriteEngine On RewriteRule ^index/(.*) index.php?url=$1
Zo houd je nette urls, en hoe je niet steeds dingen te gaan veranderen in je .htaccess.
-
23-01-2011, 22:22 #3
- Berichten
- 171
- Lid sinds
- 18 Jaar
Re: Mod rewrite en /
Ik ben geen held in htaccess maar volgens mij werkt het wel indien je de (.*) vervangt door ([^/\.]+)
Dit is wat ik zelf gebruik namelijk. Ik denk dat het staat voor alles behalve / of .
Dus in jouw geval mogen het mss ook punten zijn dus probeer eens:
Code:RewriteEngine On RewriteRule ^music/([^/]+)/([^/]+)/ index.php?cat=$1&m=$2 RewriteRule ^music/([^/]+)/([^/]+) index.php?cat=$1&m=$2 RewriteRule ^music/([^/]+)/ index.php?cat=$1 RewriteRule ^music/([^/]+) index.php?cat=$1
Let op: Ik weet het wel niet zeker maar ik denk dat als je pagina met of zonder slash hetzelfde laat zien zit je wel met duplicate content, correct me if i'm wrong.
-
23-01-2011, 23:20 #4
- Berichten
- 1.044
- Lid sinds
- 16 Jaar
Re: Mod rewrite en /
Bedankt voor de reacties!
@Stefan
Die structuur kende ik eerlijk gezegd nog niet. Ik zal er eens een keer naar kijken.
@allebei
Ik bedoelde eigenlijk dat music/naamcategorie niet te bezoeken mag zijn en dus automatisch verwezen wordt naar music/naamcategorie/
Nu heb ik wel een tijdelijke oplossing, maar toch zou ik nog graag weten hoe dat moet.
-
23-01-2011, 23:26 #5
- Berichten
- 751
- Lid sinds
- 15 Jaar
Re: Mod rewrite en /
Wat je nu gebruikt werkt voor een deel, maar je bent echter een paar dingetjes vergeten.
Doordat je nu die RewriteRule's achter elkaar zat, gaat htaccess na de eerste gewoon door met het uitvoeren.
Je moet een [L] achter je RewriteRule zetten (dat hij dan stopt)...
Omdat hij nu namelijk niet alleen de bovenste pakt, maar ook de onderste.
Code:RewriteEngine On RewriteRule ^music/(.*)/(.*)/ index.php?cat=$1&m=$2 [L] RewriteRule ^music/(.*)/(.*) index.php?cat=$1&m=$2 [L] RewriteRule ^music/(.*)/ index.php?cat=$1 [L] RewriteRule ^music/(.*) index.php?cat=$1 [L]
-
24-01-2011, 22:50 #6
- Berichten
- 1.044
- Lid sinds
- 16 Jaar
Re: Mod rewrite en /
Ik heb het getest en het maakt geen verschil... Het is namelijk de bedoeling dat music/categorie niet te bezoeken is, maar dat de bezoeker, wanneer hij dat zelf intypt, automatisch doorgestuurd wordt naar music/categorie/
-
25-01-2011, 11:40 #7
- Berichten
- 171
- Lid sinds
- 18 Jaar
Re: Mod rewrite en /
Ik denk:
Code:Redirect music/categorie music/categorie/
-
25-01-2011, 11:53 #8
- Berichten
- 599
- Lid sinds
- 16 Jaar
Re: Mod rewrite en /
Misschien een beetje offtopic, maar de performance van .htaccess is echt 10x beter dan via je PHP exploden. En een regeltje .htaccess erbij is eenvoudiger dan explode regeltjes erbij in je PHP lijkt mij zo.
-
25-01-2011, 13:09 #9
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Mod rewrite en /
Zover ik weet moet je de htaccess regel ook 'afsluiten' met het $ tegen, dan krijg je hetvolgende:
Code:RewriteEngine On RewriteRule ^music/(.*)/(.*)/$ index.php?cat=$1&m=$2 RewriteRule ^music/(.*)/(.*)$ index.php?cat=$1&m=$2 RewriteRule ^music/(.*)/$ index.php?cat=$1 RewriteRule ^music/(.*)$ index.php?cat=$1
([a-zA-Z0-9_-]+) in plaats van (.*)
Dan krijg je dus bijvoorbeeld:
RewriteRule ^music/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?cat=$1&m=$2
Wat je ook kunt doen is de slash op het einde verplicht maken:
Code:# voeg slash aan het einde toe RewriteCond %{REQUEST_URI} !(\.|/$) RewriteRule (.*) $1/ [R=301,L]
Ligt er maar aan waarvoor je het gebruikt denk ik.. ik ben hier en daar momenteel wat over frameworks aan het lezen, en de routers die je in een framework plaatst lijken toch vaker gebaseerd te zijn op de explode methode om zo de juiste methods aan te roepen en juiste objecten in te laden.Laatst aangepast door Joshua de Gier : 25-01-2011 om 13:11 Reden: Automatisch samengevoegd.
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