SEO vriendelijke URL in admin
Beste Mensen,
Ik wil deze url: www.blabla.nl/admin/page=bestellingen/product=schoenen
graag veranderen in www.blabla.nl/admin/bestellingen/schoenen
nu is me dit al wel gelukt dmv een htaccess, en dit gebeurt uiteraard ook bij andere paginas. Enkel waar ik nu tegenaanloop is dat ik graag de schoenen eruit wil halen en dan een actie maken. bijvoorbeeld een echo. Dus als het schoenen is dat echo bla anders echo bli. Maar ik weet niet precies hoe ik dit moet aanpakken.
Ik wil deze url: www.blabla.nl/admin/page=bestellingen/product=schoenen
graag veranderen in www.blabla.nl/admin/bestellingen/schoenen
nu is me dit al wel gelukt dmv een htaccess, en dit gebeurt uiteraard ook bij andere paginas. Enkel waar ik nu tegenaanloop is dat ik graag de schoenen eruit wil halen en dan een actie maken. bijvoorbeeld een echo. Dus als het schoenen is dat echo bla anders echo bli. Maar ik weet niet precies hoe ik dit moet aanpakken.
explode() ?
ja heb ik zo gedaan:
$explode = explode("/", $_SERVER['REQUEST_URI']);
if(isset($explode[3])){
if($explode[3] == "add"){
echo "d";
}
}
Maar ik krijg terug dat de pagina niet bestaat. Dus gewoon een 404 not found
$explode = explode("/", $_SERVER['REQUEST_URI']);
if(isset($explode[3])){
if($explode[3] == "add"){
echo "d";
}
}
Maar ik krijg terug dat de pagina niet bestaat. Dus gewoon een 404 not found
Dat zal wel los van dit stukje staan, want hierin wordt geen site opgevraagd.
ja dat begrijp ik, maar ligt dit misschien aan mijn htaccess? Want het is nu dus: http://localhost/admin/winkel/add/ waarbij ik die add probeer op te halen. Maar hij zegt dan dit:
The requested URL /admin/winkel/add/.php was not found on this server.
The requested URL /admin/winkel/add/.php was not found on this server.
Als je www.blabla.nl/admin/?page=bestellingen&product=schoenen
hebt en je deze met rewriterule omzet naar www.blabla.nl/admin/bestellingen/schoenen
Dan kun je toch nog steeds $_GET['product'] gebruiken?
Ik snap je gekloot met explode niet, of ik snap je vraag niet ...
hebt en je deze met rewriterule omzet naar www.blabla.nl/admin/bestellingen/schoenen
Dan kun je toch nog steeds $_GET['product'] gebruiken?
Ik snap je gekloot met explode niet, of ik snap je vraag niet ...
Ja oke ik heb het nu zo gemaakt inderdaad: www.blabla.nl/admin/bestellingen?action=add
maar nu wil ik dat daar komt te staan: www.blabla.nl/admin/bestellingen/add
hoe kan ik dit in de htaccess veranderen?
maar nu wil ik dat daar komt te staan: www.blabla.nl/admin/bestellingen/add
hoe kan ik dit in de htaccess veranderen?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
RewriteEngine on
RewriteBase /
#static
RewriteRule ^bestellingen/add/?$ bestellingen.php?action=add [L]
#of dynamisch mocht je meerdere action hebben
RewriteRule ^bestellingen/([^.?/]+)/?$ bestellingen.php?action=$1 [L]
RewriteBase /
#static
RewriteRule ^bestellingen/add/?$ bestellingen.php?action=add [L]
#of dynamisch mocht je meerdere action hebben
RewriteRule ^bestellingen/([^.?/]+)/?$ bestellingen.php?action=$1 [L]
één van de twee kun je gebruiken wat het beste in jouw situatie past.
Niet allebei ;)
Gewijzigd op 21/03/2014 09:04:26 door Michael -
Maar is het dan ook zo dat als ik een andere pagina heb, dat ik dan weer deze regel moet toevoegen:
RewriteRule ^bestellingen/([^.?/]+)/?$ bestellingen.php?action=$1 [L]
Dan krijg ik straks 10 van die regels onder elkaar als ik meerdere paginas krijg?
RewriteRule ^bestellingen/([^.?/]+)/?$ bestellingen.php?action=$1 [L]
Dan krijg ik straks 10 van die regels onder elkaar als ik meerdere paginas krijg?
Ligt er dus aan wat je wil. Daarom gaf ik 2 voorbeelden.
Wat voor pagina's heb je?
Je zou het ook zo kunnen doen namelijk (Niet getest)
RewriteRule ^([^.?/]+)/([^.?/]+)/?$ $1.php?action=$2 [L]
Maar dan ben je wel afhankelijk van de action omdat je deze er juist uit wilt laten.
Probeer eens wat uit zou ik zeggen, er is een hoop mogelijk afhankelijk van wat voor jou handig is.
edit
Die action ligt natuurlijk ook aan jouw manier van programmeren. Persoonlijk zou ik dat namelijk nooit meegeven alleen pagina.php?add of pagina.php?send etc.
Dan kun je in je htaccess ook wat flexibeler zijn.
Veel rewriterules hebben is ook niet erg hoor.
Wat voor pagina's heb je?
Je zou het ook zo kunnen doen namelijk (Niet getest)
RewriteRule ^([^.?/]+)/([^.?/]+)/?$ $1.php?action=$2 [L]
Maar dan ben je wel afhankelijk van de action omdat je deze er juist uit wilt laten.
Probeer eens wat uit zou ik zeggen, er is een hoop mogelijk afhankelijk van wat voor jou handig is.
edit
Die action ligt natuurlijk ook aan jouw manier van programmeren. Persoonlijk zou ik dat namelijk nooit meegeven alleen pagina.php?add of pagina.php?send etc.
Dan kun je in je htaccess ook wat flexibeler zijn.
Veel rewriterules hebben is ook niet erg hoor.
Gewijzigd op 21/03/2014 09:21:04 door Michael -
Ja ik begrijp inderdaad wat je bedoelt. Het probleem is dat ik niet precies weet hoe die htaccess werkt. Ik het me er in geprobeerd te verdiepen, maar vind het erg lastig. Ik heb een adminpaneel gemaakt, en soms wordt deze url opgeroepen: www.blabla.nl/bestellingen of www.blabla.nl/bestellingen?action=add (dus met en zonder action)
maar soms ook dit: www.blabla.nl/winkel?cat=bloemen&action=edit
ik wil de htaccess zo dynamisch mogelijk opbouwen.
maar soms ook dit: www.blabla.nl/winkel?cat=bloemen&action=edit
ik wil de htaccess zo dynamisch mogelijk opbouwen.
Helemaal ontkom je er niet aan hoor. Ik heb voor een simpele site ook 40/50 regels. Dat houd het ook wel weer overzichtelijk en voor bijv index.php wil ik niet site.com/index/ dus wordt dat toch alweer een aparte regel.
edit
Nou zie je dat het bij de 2e en 3e regel al mis gaat. Omdat je één actie wilt voor meerdere doelen. winkel/bloemen/ zou nou verwijzen naar winkel.php?action=bloemen
Code (php)
1
2
3
4
2
3
4
RewriteRule ^([^.?/]+)/?$ $1.php [L]
RewriteRule ^([^.?/]+)/([^.?/]+)/?$ $1.php?action=$2 [L]
RewriteRule ^([^.?/]+)/([^.?/]+)/?$ $1.php?cat=$2 [L]
RewriteRule ^([^.?/]+)/([^.?/]+)/([^.?/]+)/?$ $1.php?cat=$2&action=$3 [L]
RewriteRule ^([^.?/]+)/([^.?/]+)/?$ $1.php?action=$2 [L]
RewriteRule ^([^.?/]+)/([^.?/]+)/?$ $1.php?cat=$2 [L]
RewriteRule ^([^.?/]+)/([^.?/]+)/([^.?/]+)/?$ $1.php?cat=$2&action=$3 [L]
edit
Nou zie je dat het bij de 2e en 3e regel al mis gaat. Omdat je één actie wilt voor meerdere doelen. winkel/bloemen/ zou nou verwijzen naar winkel.php?action=bloemen
Gewijzigd op 21/03/2014 09:33:12 door Michael -
Dankje, ik ga het proberen!
Zie ook de edit. Daardoor zou je die 2 toch weer apart moeten noemen.
Inderdaad, dus eigenlijk is het apart nemen van de pagina's alsnog het beste?
Ja in ieder geval voor bestellingen en winkel dus een aparte regel en die action en cat kunnen nog wel open blijven.
Let er trouwens op dat ([^.?/]+) betekent dat je ALLE karakters accepteert. Je kunt dit beperken door alleen cijfers ([0-9]+) alleen letters ([A-Za-z]+) of een combinatie ([A-Za-z0-9]+) en eventueel nog met wat tekens die wel mogen zoals _ en -([A-Za-z0-9_-]+)
Code (php)
1
2
3
4
2
3
4
RewriteRule ^([^.?/]+)/?$ $1.php [L]
RewriteRule ^bestellingen/([^.?/]+)/?$ bestellingen.php?action=$2 [L]
RewriteRule ^winkel/([^.?/]+)/?$ winkel.php?cat=$2 [L]
RewriteRule ^winkel/([^.?/]+)/([^.?/]+)/?$ winkel.php?cat=$2&action=$3 [L]
RewriteRule ^bestellingen/([^.?/]+)/?$ bestellingen.php?action=$2 [L]
RewriteRule ^winkel/([^.?/]+)/?$ winkel.php?cat=$2 [L]
RewriteRule ^winkel/([^.?/]+)/([^.?/]+)/?$ winkel.php?cat=$2&action=$3 [L]
Let er trouwens op dat ([^.?/]+) betekent dat je ALLE karakters accepteert. Je kunt dit beperken door alleen cijfers ([0-9]+) alleen letters ([A-Za-z]+) of een combinatie ([A-Za-z0-9]+) en eventueel nog met wat tekens die wel mogen zoals _ en -([A-Za-z0-9_-]+)
Gewijzigd op 21/03/2014 09:45:07 door Michael -
Oke helemaal top, dankjewel ik ga ermee aan de slag.
Als het is gelukt of als het niet lukt horen we het graag :)
Het werkt niet helemaal. dit is mijn link nu:
http://localhost/admin/producten.php?categorie=test%20category
en als ik dan dit toepas in de htaccess:
RewriteRule ^producten/([^.?/]+)/?$ producten.php?categorie=$2 [L]
gebeurt er niets met mijn link
http://localhost/admin/producten.php?categorie=test%20category
en als ik dan dit toepas in de htaccess:
RewriteRule ^producten/([^.?/]+)/?$ producten.php?categorie=$2 [L]
gebeurt er niets met mijn link
Als je dan naar http://localhost/admin/producten/test%20category gaat gebeurd er niks bedoel je?
Edit: $2 moet trouwens $1 zijn.
Edit: $2 moet trouwens $1 zijn.
Gewijzigd op 21/03/2014 21:50:41 door Michael -
ik heb het nu zo dat hij goed is, enkel heb ik er een toegevoegd:
RewriteRule ^producten/(.*)/$ producten.php?action=$1 [L]
En als link dit:
http://127.0.0.1/admin/producten/add/
Maar als ik dan $_GET['action']; doe krijg ik niets.. Dan staat er dat hij undefined is
RewriteRule ^producten/(.*)/$ producten.php?action=$1 [L]
En als link dit:
http://127.0.0.1/admin/producten/add/
Maar als ik dan $_GET['action']; doe krijg ik niets.. Dan staat er dat hij undefined is




