Graag zou ik de maand in tekst willen hebben in de URL.
Het is wel gelukt om de maanden in cijfers te krijgen, in de URL(Htaccess).
Ik weet dat F de volledige naam van een maand is.
$dt = new DateTime();
if(isset($_GET['y']) && isset($_GET['m'])) {
if(checkdate($_GET['m'], 1, $_GET['y'])) {
$dt = new DateTime($_GET['y'].'-'.$_GET['m'].'-1');
}
}
$intervalStart = $dt->format('Y-m-d'); // today
$intervalEnd = $dt->format('Y-m-t'); // end of month
Met welke reden wil je dat? Er hoeft maar een instelling op de server scheef te staan en je krijgt 'August' in plaats van 'Augustus', en je pagina is onbereikbaar.
Je kan ook prima een datum als dd-mm-yyyy opgeven, afhankelijk van de context.
?
Onbekende gebruiker
16-10-2019 15:40
Voor de indexering van Google en het is overzichtelijker dan een nummer. De bedoeling is dat de maand in de URL in het Engels komt.
Idealiter wil je ook niet voor elk stuk functionaliteit een (of zelfs meer) rewriterules creëren. Dit wordt al gauw een onoverzichtelijke brei.
Dit zou ook min of meer inhouden dat elke pagina achter de schermen een bijbehorend standalone script heeft. Dus elke pagina vormt dan in wezen een ingang naar je website of -applicatie.
Als je zoiets aan het bouwen bent dan zul je dit proces meer moeten stroomlijnen (uit gebruikersgemak, maar ook uit oogpunt van veiligheid). Heel kort door de bocht zorg je dat je hele applicate één poort heeft die je toegang verschaft tot de rest van de code. Deze zogenaamde single point of entry is vaak index.php.
Wat dit soort applicatie dan ook vaak hebben is één enkele rewriterule die alles (intern) doorstuurt naar index.php. In index.php wordt dan de oorspronkelijk aangeroepen URL ($_SERVER['REQUEST_URI']) geïnspecteerd en wordt uitgerekend welke pagina geserveerd moet worden, of als blijkt dat dit bij nader inzien toch een onbekende pagina was, dan wordt een 404 pagina geserveerd. Je rekent dus in feite handmatig de pagina uit die bij een URL hoort, maar daarbij heb je het werk dus gedelegeerd van .htaccess naar PHP.
Een bijkomend voordeel van deze aanpak is dat je het verder uitrekenen van een specifieke pagina op zijn beurt ook verder kunt delegeren naar specifieke functionaliteit. Zo zou je (vanuit index.php) kunnen besluiten dat alles van de vorm calendar/* verder verwerkt wordt door de kalender-functionaliteit zelf. Hiermee paas je in wezen alles door naar de "interne voordeur" van dit specifieke stuk functionaliteit. En dit beïnvloedt verder niet de standaard "flow" waarbij alles door index.php gaat.
Zo zou je dus ook alles van de vorm forum/* kunnen delegeren naar een "forum index.php". Net zoals bij een kalender kan dit zeer handig zijn, want de diversiteit aan (zoekmachinevriendelijke) URL's die deze pagina's allemaal hebben is waarschijnlijk (op den duur) nogal groot, hiervan wil je niet een lijst in index.php hebben die alles doormapt naar een forum-overzicht, -categorie of -berichtenpagina. Dat zou een beetje onbegonnen werk zijn.
Het moge duidelijk zijn dat deze aanpak (single point of entry) zeer behulpzaam kan zijn bij het opstellen van zoekmachinevriendelijke URLs, zonder dat je je hiermee op voorhand beperkt qua mogelijkheden of vrijheid in de naamgeving.
?
Onbekende gebruiker
16-10-2019 19:33
Bedankt voor je reactie! Ja, dan heb je nog een betere structuur.
Iedereen kan URL's breien. Het is ook zaak dat bij aanroep de juiste handelingen worden verricht bij het verwerken van het request.
Het bovenstaande is dus maar een half antwoord, en daarmee dus eigenlijk geen antwoord.
Je hebt nu al op (ten minste) drie topics gereageerd met vanuit-de-heup-geschoten antwoorden die nogal kort door de bocht zijn.
Het gaat er niet om dat je zoveel mogelijk antwoorden geeft, het gaat erom dat je antwoorden geeft waar iemand iets aan heeft, en waar men mogelijk/hopelijk wat van opsteekt.
Het is fijn dat je zo enthousiast aan het typen bent, maar zou je dit enthousiasme wat in kunnen dammen ten faveure van iets langere, en beter onderbouwde, antwoorden die ook wat uitleg geven? Het bovenstaande voegt namelijk niet zoveel toe.
Ik sluit mij aan bij Thomas en ik vind dit ook een antwoord die weinig betrekking heeft op het vraagstuk. In een ander topic legt Thomas je precies uit wat er niet goed gaat.
Het is erg attent dat je iemand wilt helpen, maar let dan op of een topic actueel is, en let er op dat je goede concrete antwoorden geeft die aansluiten op het vraagstuk. Tot nu toe zijn de gegeven antwoorden nog niet echt zinvol te noemen, hoewel het vriendelijk bedoeld zal zijn. Ook is enige uitleg als je een stukje code plaatst zeker niet overbodig.