SEO vriendelijke URL in admin
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() ?
$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.
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.
ja dat begrijp ik, maar ligt dit misschien aan mijn htaccess? Want het is nu dus: The requested URL /admin/winkel/add/.php was not found on this server.
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 ...
Als je 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 ...
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?
Ja oke ik heb het nu zo gemaakt inderdaad: 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 -
RewriteRule ^bestellingen/([^.?/]+)/?$ bestellingen.php?action=$1 [L]
Dan krijg ik straks 10 van die regels onder elkaar als ik meerdere paginas krijg?
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 -
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.
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: maar soms ook dit: www.blabla.nl/winkel?cat=bloemen&action=edit
ik wil de htaccess zo dynamisch mogelijk opbouwen.
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?
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 :)
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/test%20category gaat gebeurd er niks bedoel je?
Edit: $2 moet trouwens $1 zijn.
Als je dan naar Edit: $2 moet trouwens $1 zijn.
Gewijzigd op 21/03/2014 21:50:41 door Michael -
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