Url structuur dashboard

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bryan De Baar

Bryan De Baar

29/05/2019 18:49:03
Quote Anchor link
Goede avond,

Ik ben wat het stoeien met een dashboard.
in de root heb ik een index.php met een basis layout.
De content die wil ik dynamisch maken door includes te gebruiken en zo de desbetreffende pagina te laten zien.

Zelf dacht ik om links te maken zoals
mijnsite.nl?page=profile
mijnsite.nl?page=settings
Enz enz.

Door de get methode te gebruik in php kan ik de juiste file includen.

2 vragen:

1: Ben ik zo in de juiste weg het denken? Of zijn er andere methodes die jullie adviseren?
2: Hoe kan ik ipv de parameterlink een normale link maken dus:
mijnsite.nl/profile
mijnsite.nl/settings


Alvast bedankt :)
 
PHP hulp

PHP hulp

29/03/2024 10:28:00
 
Adoptive Solution

Adoptive Solution

29/05/2019 19:01:36
 
- Ariën  -
Beheerder

- Ariën -

29/05/2019 19:03:54
Quote Anchor link
Ikzelf raad aan om met mod_rewrite mooie vriendelijke URL's te maken.

Kijk ook eens naar deze tutorial:
https://www.linode.com/docs/web-servers/apache-tips-and-tricks/rewrite-urls-with-modrewrite-and-apache/
 
Thomas van den Heuvel

Thomas van den Heuvel

29/05/2019 19:35:50
Quote Anchor link
Het artikel van @Adoptive (Created on Thursday, January 1, 1970 lel) volgt wat mij betreft de verkeerde insteek. Daar wordt min of meer per potentiële pagina(-structuur) een RewriteRule geïntroduceerd.

Ook wordt in dat artikel gedaan alsof niet-SEO-vriendelijke URLs (per definitie?) "slecht" zijn maar als het geen biet uitmaakt hoe een URL er uitziet (denk aan een intranet of administratief systeem) dan is er geen enkele noodzaak om deze mooi te maken.

Daarnaast is dit:
> They allow search engines to spider your site.
Ook niet helemaal (meer) waar (tegenwoordig). Het kan voor een zoekmachine moeilijker zijn om te bepalen of twee pagina's die beginnen met "index.php" echt verschillende pagina's zijn, maar dit zou een zoekmachine er (technisch gezien) niet van moeten weerhouden om door een site te crawlen.

De crux van zoekmachinevriendelijke URLs is (mede) dat je de controle welke pagina wordt geserveerd verplaatst naar code, in plaats van dat je dit (alles) probeert te regelen in allerlei herschrijfregels wat in wezen buiten je "webapplicatie" valt.

Het enige wat in er eigenlijk hoeft te gebeuren is dat je *alle* verzoeken doorstuurt naar één script (je single-point-of-entry, vaak index.php), en dit script, of een vervolgscript waar je naartoe delegeert, pluist verder uit welke pagina geserveerd zou moeten worden.

Bijkomend voordeel is dat je applicatie één ingang heeft, in plaatst van vele verschillende, die je alle op eenzelfde manier zou moeten inrichten, wat mogelijk veel overhead kan introduceren.
Gewijzigd op 29/05/2019 19:42:31 door Thomas van den Heuvel
 
Rob Doemaarwat

Rob Doemaarwat

29/05/2019 19:54:31
Quote Anchor link
Waar je naar op zoekt bent heet een "router" (Google maar op "router php"). Daar zijn er zat van, dus waarschijnlijk zit er wel iets voor je tussen.

Ik zou het *niet* met mod_rewrite doen, omdat dat vrij statisch is. Je kunt het zelf wel aanpassen, maar je kunt het bijvoorbeeld niet afhankelijk van je vertalingen maken (stel dat je in het Engels een link mijnsite.com/user/login hebt, maar de vertaler vindt dat dat "logon" moet zijn, dan moet jij dus je .htaccess aan gaan passen. Als je het lijstje zelf in PHP bijhoudt (via je index.php / single point of entry waar Thomas het al over heeft), dan kun je de vertalingen 1:1 koppelen aan je "routes". Als de vertaler dus een wijziging maakt (of een extra taal toevoegt!), gaan je routes direct mee.

In de meeste routers kun je dan ook nog variabelen opnemen. JE schrijft dus bijvoorbeeld "/page/[pageId:\\w+]" en deze matcht dan aan alle URL's die "/page/" beginnen, met daarna een stuk dat alleen uit cijfers en letters bestaat (die laatste komt als "pageId" in je request parameters; "\\w+" is de regular expression die vastlegt dat het alleen letter+cijfers mogen zijn - hetzelfde kun je ook via mod_rewrite doen, maar wederom: minder flexibel, alleen de programmeur, terwijl als je het in PHP doet kun je ook een admin gebruiker de routes laten beheren).
Gewijzigd op 29/05/2019 19:56:13 door Rob Doemaarwat
 
- Ariën  -
Beheerder

- Ariën -

30/05/2019 19:16:57
Quote Anchor link
Even een aanvulling op Rob: mod_rewrite is vaak wel van toepassing op een router, maar dan enkel tot de voordeur, en niet tot de andere pagina's van de website.

Een voorbeeld van .htaccess volgens een tutorial over een 'Single page of entry' van Thomas:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Enable rewriting.
RewriteEngine on

# Optional: do not allow perusal of directories.
Options -Indexes

# Optional: explicitly enable per-directory rewrites in the .htaccess context.
Options +FollowSymLinks

# Required when not in the webroot. Always use a trailing slash.
RewriteBase /

# To be able to access existing directories and files (standalone scripts).
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

# Redirect everything else to index.php.
# Add QSA to ensure that querystring variables are registered as such.
RewriteRule . index.php [L,QSA]


Alles wat in de browser wordt opgeroepen, gaat door naar index.php (die het weer moet opvangen met een router). Dit geldt echter niet voor directories en bestanden (zie regel 14 en 15)
Gewijzigd op 30/05/2019 19:17:22 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

30/05/2019 19:29:32
Quote Anchor link
Daarbij is het ook handig om verder alle code, behalve index.php en wellicht speciale standalone PHP-scripts, buiten de webdirectory te houden om te voorkomen dat er "botsingen" plaatsvinden tussen aangeroepen "virtuele URLs" en fysieke bestanden die op dezelfde locatie staan.
 
Jop B

Jop B

01/06/2019 20:29:27
Quote Anchor link
Misschien denk ik te simpel maar hij wilt nu de content in de index inladen omdat die een basis layout heeft.
Maar zou die niet gewoon een mappenstructuur kunnen maken en dan de layout in de verschillende paginas inladen?
Bij Wordpress heb je een header en een footer file die include je en dan heb je je layout in je verschillende content paginas en kun je URLS maken zoals je zelf zou willen.
 
Thomas van den Heuvel

Thomas van den Heuvel

01/06/2019 23:33:11
Quote Anchor link
Op het moment dat je aan de slag gaat met custom URLs komen er ineens een heleboel dingen samen.

(o.a.) @Jop, er zijn een aantal invalshoeken, zo moet je nadenken over:
- hoe een extern verzoek resulteert in het intern uitvoeren van het bijbehorende stuk code, eventueel met een of meer vertaalslagen
- hoe je deze code inhoudelijk organiseert, bij voorkeur wil je de code zo structureren dat deze een zeker stramien qua naamgeving en qua werking volgt, hiervoor moet je weer nadenken over hoe dat er dan uit zou moeten zien
- en dus ook hoe je structuur geeft aan de bestanden zelf; hierbij verdient het waarschijnlijk de voorkeur om met classes (en eventueel een autoloader) te werken

Als je het netjes wilt doen voert dit dus (veel) verder dan wat RewriteRules in een .htaccess bestand gooien. Maar als dat eenmaal loopt heb je in principe een mini frameworkje waarin je volledig vrij bent in de naamgeving van je pagina's. Maar dat kost dus wel wat moeite.

Wanneer je dit niet zelf wilt breien kun je misschien beter kijken naar een bestaand framework.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/06/2019 10:40:21
Quote Anchor link
Het is beter en makkelijker om een framework te gebruiken als Symfony of Laravel. Je hebt dan wellicht een leercurve waar je overheen moet maar daarna wordt je o zo blij :-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.