!? in url
Ik wil dat mijn site friendly CEO url's krijgt, en daar bij gebruik ik htaccess.
Ik heb het volgende url:
Zoals je ziet, heb ik bij de title, een ?! achter sommige artikelen bevatten namelijk een ! of een ?@#$ ectra.
Ik gebruik op dit moment:
Code (php)
1
RewriteRule ^c/([a-zA-z]+)/([a-zA-z0-9?_-]+)/([0-9]+)$ category.php?nameID=$1&title=$2&id=$3 [L]
Maar helaas werkt dit niet, Is het ook mogelijk om zulke characters te trimmen? ik gebruik namelijk 2 rows waar de titel in zit, 1 zonder spaties dat is voor de url maar wil het eigenlijk ook zonder !@#$%^&*()_+|{}:"<>?/., ectra
Gewijzigd op 01/05/2014 13:50:20 door Haddi Vries
Snel even getiept, misschien werkt het?
Zorg dus eerst dat je URL er netjes uitziet. Hiervoor kun je rawurlencode en rawurldecode gebruiken.
Persoonlijk zou ik de rewriterule niet zo streng zetten voor een titel. Een ID kan je inderdaad op digits controleren. Een titel kun je bij weergave veilig weergeven met htmlentities of htmlspecialchars o.i.d. waardoor het niet uitmaakt wat erin staat. Of je haalt deze titel d.m.v. het ID sowieso uit de database waarbij het eigenlijk maar leuk is voor SEO.
1)Waarom een ID, en NameID.
2)Maak het het simpelst mogelijk.
3)Waarom die characters?
Michael - op 01/05/2014 13:55:40:
Dat soort tekens horen helemaal niet in een URL thuis.
Zorg dus eerst dat je URL er netjes uitziet. Hiervoor kun je rawurlencode en rawurldecode gebruiken.
Persoonlijk zou ik de rewriterule niet zo streng zetten voor een titel. Een ID kan je inderdaad op digits controleren. Een titel kun je bij weergave veilig weergeven met htmlentities of htmlspecialchars o.i.d. waardoor het niet uitmaakt wat erin staat. Of je haalt deze titel d.m.v. het ID sowieso uit de database waarbij het eigenlijk maar leuk is voor SEO.
Zorg dus eerst dat je URL er netjes uitziet. Hiervoor kun je rawurlencode en rawurldecode gebruiken.
Persoonlijk zou ik de rewriterule niet zo streng zetten voor een titel. Een ID kan je inderdaad op digits controleren. Een titel kun je bij weergave veilig weergeven met htmlentities of htmlspecialchars o.i.d. waardoor het niet uitmaakt wat erin staat. Of je haalt deze titel d.m.v. het ID sowieso uit de database waarbij het eigenlijk maar leuk is voor SEO.
Ik heb rawurlencode() gebruikt maar dan krijg ik '%3F%21' dit in mij url adres, is het mogelijk om die te trimmen?
Toevoeging op 01/05/2014 14:06:01:
Pepijn --- op 01/05/2014 13:57:30:
Toevoeging op Michael:
1)Waarom een ID, en NameID.
2)Maak het het simpelst mogelijk.
3)Waarom die characters?
1)Waarom een ID, en NameID.
2)Maak het het simpelst mogelijk.
3)Waarom die characters?
De ID en nameID is de isset, die verwijder ik uiteraard uit de url. Ik heb het nu ook c/CATEGORY/NAAMARTIKEL/ID
Daar is rawurldecode voor.
Je moet de url encode'n zodat ie geschikt is als url, als je de url daarna weer zou willen gebruiken kun je hem decode'n (rawurlencode, rawurldecode)
Als je echt geen rare tekens in je url wilt zou je deze ook zelf kunnen vervangen door iets anders. Zo worden spaties vaak vervangen door een streep en speciale tekens door 'gewone' tekens. Dit is niet altijd weer onomkeerbaar (Hoe wil je bijv é®þüúíóöö noemen en weer omkeren).
Edit: kijk bijv eens hoe de urls van phphulp eruit zien. ! en ? worden blijkbaar weggelaten, maar bijv $ wordt vervangen door 'dollarteken'.
Gewijzigd op 01/05/2014 14:16:26 door Michael -
Michael - op 01/05/2014 14:14:51:
Wat bedoel je met trimmen? 'Trimmen' is in mijn ogen iets weghalen/opschonen.
Je moet de url encode'n zodat ie geschikt is als url, als je de url daarna weer zou willen gebruiken kun je hem decode'n (rawurlencode, rawurldecode)
Als je echt geen rare tekens in je url wilt zou je deze ook zelf kunnen vervangen door iets anders. Zo worden spaties vaak vervangen door een streep en speciale tekens door 'gewone' tekens. Dit is niet altijd weer onomkeerbaar (Hoe wil je bijv é®þüúíóöö noemen en weer omkeren).
Edit: kijk bijv eens hoe de urls van phphulp eruit zien. ! en ? worden blijkbaar weggelaten, maar bijv $ wordt vervangen door 'dollarteken'.
Je moet de url encode'n zodat ie geschikt is als url, als je de url daarna weer zou willen gebruiken kun je hem decode'n (rawurlencode, rawurldecode)
Als je echt geen rare tekens in je url wilt zou je deze ook zelf kunnen vervangen door iets anders. Zo worden spaties vaak vervangen door een streep en speciale tekens door 'gewone' tekens. Dit is niet altijd weer onomkeerbaar (Hoe wil je bijv é®þüúíóöö noemen en weer omkeren).
Edit: kijk bijv eens hoe de urls van phphulp eruit zien. ! en ? worden blijkbaar weggelaten, maar bijv $ wordt vervangen door 'dollarteken'.
Dat ene laatste is net wat ik zoek, het weg laten halen van ?! Ik heb in mijn mysql, 2 rows waar de title ingaat. 1 gaat er normaal en uit en laat het gehele row informatie zien, en de tweede row verwijderd de spaties ectra, maar heb helaas nog niet gedacht aan tekens zoals ! en ?