414 Request-URI Too Large
Ik ben bezig met een website cq webshop. Hierop staan velen producten met specificaties met daarbij een filter optie. Dit om gemakkelijk producten te vinden.
Nu zijn er zoveel opties (<select>) dat wanneer dit middels de method="GET" in het form niet gaat werken. De url wordt veel te lang! Met als resultaat de titel van dit bericht.
Oplossing is natuurlijk POST i.p.v. GET als method gebruiken, nadeel hiervan is dat wanneer je de url kopieer iemand ander niet gelijk jou gekozen filters voor zich krijgt.
Nog een weetje is dat niet alle filters tegelijk gekozen worden waardoor meerdere waardes leeg zijn en de url niet zo lang hoeft te worden. Kunnen deze voor het "submitten" eruit gehaald worden is de vraag?
Voorbeeld van URL na "subbmitten" form (iets minder lang als in werkelijkheid):
categorie.php?merk=Samsung&Processor=i3&Geheugen=0&Kleur=0&Webcam=1
Voordat alles echt "gesubmit" is moet dit gefilterd worden naar (alle lege waardes weg):
categorie.php?merk=Samsung&Processor=i3&Webcam=1
Hoop dat het duidelijk is en hoor uiteraard graag!
Roy D op 21/01/2012 21:25:17:
... dit middels de method="GET" in het form ...
Waarom niet gewoon een POST?
Roy D op 21/01/2012 21:25:17:
Oplossing is natuurlijk POST i.p.v. GET als method gebruiken, nadeel hiervan is dat wanneer je de url kopieer iemand ander niet gelijk jou gekozen filters voor zich krijgt.
De enige manier die ik zou kunnen bedenken om dat op te lossen is erg omslachtig:
Verstuur het formulier met POST en controleer welke variabelen gevuld zijn. Maak daarvan een url die je met een header verstuurd.
Stel je hebt:
categorie.php?merk=Samsung&Processor=i3&Geheugen=0&Kleur=0&Webcam=1
Dan zou je kunnen zeggen dat merk een eigenschap is met id 1 is en Samsung de bijbehorende waarde met (bijv.) id 15. Je scheidt deze bijv. door een streepje. Je krijgt dan 1-15. Vervolgens kom je bij de 2e eigenschap (Processor) en deze heeft id 2 en de waarde van i3 is 28. Dan krijg je 2-28. Uiteindelijk doe je dat voor alle eigenschappen en dan zou je bijv. zoiets krijgen:
categorie.php?filter=1-15+2-28+5-1
Omdat geheugen en kleur op 0 staan stuur je die niet mee.
Misschien een beetje krom uitgelegd maar ik hoop dat je begrijpt wat ik bedoel.
Gewijzigd op 21/01/2012 22:22:26 door Ozzie PHP
Ik heb het zelf op de volgende manier gedaan:
http://www.bestbuykinderfietsen.nl/filter/14_inch_(3_-_5_jaar)-300/100_-_150-305/meisjesfiets-287/
Alleen, vraag ik me af of het in jouw geval wel zoveel scheelt. Hoelang wordt de URL ook daadwerkelijk en hoeveel opties heb je?
Kees, mee eens... maar volgens mij de enige manier om de url drastisch in te korten? (van de andere kant kun je je afvragen wat het probleem is van zo'n lange url...)
Maar goed, ik kan me eerlijk gezegd niet goed voorstellen dat je URL zo lang moet worden. Daarom vraag ik ook welke opties je hebt e.d. misschien dat we er iets op kunnen verzinnen door gebruik te maken van een bepaalde taxonomie structuur.
Code (php)
1
index.php?p=categorie&id=88&alle_filters=1&merk=Samsung&Beeldscherm=0&Linux+operating+systems+supported=0&Mac+operating+systems+supported=0&Server+operating+systems+supported=0&Windows+operating+systems+supported=0&Veiligheid=0&Certificering=0&Energy+Star-certificaat=0&Bedrijfstemperatuur%2C+bereik=0&Hoogte+in+bedrijf=0&Luchtvochtigheid+bij+opslag=0&Relatieve+luchtvochtigheid%2C+in+bedrijf=0&Temperatuur+bij+opslag=0&Temperatuur%2C+in+bedrijf=0&Aanbevolen+media+gewicht+%28duplex%2C+Imperial%29=0&Aanbevolen+mediagewicht=0&Aanbevolen+temperatuur+bij+gebruik=0&Aantal+dozen+per+pallet=0&Aantal+lagen+per+pallet=0&Aantal+per+pallet=0&Afmetingen+pallet+%28B+x+D+x+H%29=0&Akoestische+druk+uitstoot+omstanders+%28standby%29=0&Akoestische+emissie+%28gereed%29=0&Automatische+papierherkenning=0&Bedieningspaneel=0&Beveiligingsbeheer=0&Blue+Angel-compatibel=0&Downloadbare+software=0&Driver-updates+%E2%80%93+omschrijving=0&Duplex+bindende=0&Eerste+pagina+%28kleur%2C+schrijven%2C+slapen%29=0&Eerste+pagina+verschijnt+%28zwart+%2F+wit%2C+brief%2C+koude+start%29=0&Eerste+pagina+verschijnt+%28zwart+%2F+wit%2C+schrijven%2C+slapen%29=0&Eerste+pagina+verschijnt+%28zwart+%2F+wit%2C+schrijven%2C+warme+stroom%29=0&Eerste+pagina+verschijnt%2C+kleur+%28A4%2C+standby%29=0&Eerste+pagina+verschijnt%2C+kleur+%28kwarto%2C+standby%29=0&Eerste+pagina+verschijnt%2C+monochroom+%28A4%2C+standby%29=0&Eerste+pagina+verschijnt%2C+monochroom+%28kwarto%2C+standby%29=0&Formaten+afwijkende+media=0&Frequentie=0&Geluidsdruk+omstander+%28tijdens+printen%29=0&Gewicht+pallet=0&Hoogte%2C+in+bedrijf+%28brits%2Famerikaans%29=0&Hostmelding=0&Ingangsspanning=0&Maximum+afmetingen+%28B+x+D+x+H%29=0&Mediaformaten+%28lade+2%29=0&Mediaformaten+%28lade+3%29=0&Mediagewicht+lade+2=0&Mediagewicht%2C+lade+3=0&Mediagewichten+per+papierpad=0&Mediatype+en+capaciteit%2C+lade+2=0&Mediatype+en+capaciteit%2C+lade+3=0&Minimum+systeemeisen+voor+Macintosh=0&Ondersteunde+mediaformaten=0&Ondersteunde+mediaformaten+voor+dubbelzijdig+printen=0&Printsnelheid+%28kleur%2C+normale+kwaliteit%2C+US+letter%29=0&Printsnelheid+%28zwart%2C+normale+kwaliteit%2C+US+letter%29=0&Printsnelheid+kleur+%28presentatie%2C+kwarto%29=0&Printsnelheid+zwart+%28presentatie%2C+kwarto%29=0&Standaard+mediaformaten=0&Standaard+mediaformaten+%28dubbelzijdig%2C+brits%2Famerikaans%29=0&Stroomverbruik=0&Stroomverbruik+%28in+standby%29=0&Stroomverbruik+%28indien+actief%29=0&Stroomverbruik+%28indien+uit%29=0&Stroomverbruik+%28PowerSave%29=0&SureSupply+ondersteuning=0&SureSupply+softwaredriver=0&SureSupply+type+verbinding=0&TEC+%28Typical+Electricity+Consumption%29+nummer=0&Upgrademogelijkheden=0&Verwerking+van+uitvoer=0&Flashgeheugen=0&Geheugenslots=0&Intern+geheugen=0&Maximaal+intern+geheugen=0&Opslagcapaciteit+harde+schijf=0&Type+geheugen=0&Aanbevolen+media+gewicht+%28duplex%2C+Imperial%29=0&Aanbevolen+relatieve+luchtvochtigheid+bij+gebruik=0&Aanbevolen+temperatuur+bij+gebruik=0&Aantal+dozen+per+pallet=0&Aantal+lagen+per+pallet=0&Aantal+per+pallet=0&Afmetingen+pallet+%28B+x+D+x+H%29=0&Afmetingen%2C+noot+%28brits%2Famerikaans%29=0&Afmetingen%2C+noot+%28metrisch%29=0&Akoestische+druk+uitstoot+omstanders+%28standby%29=0&Akoestische+emissie+%28gereed%29=0&Automatische+papierherkenning=0&Bedieningspaneel=0&Beveiligingsbeheer=0&Blue+Angel-compatibel=0&Document+levering+snelheid+%28A4%29=0&Document+levering+snelheid+%28brief%29=0&Document+levering+snelheid+nota=0&Downloadbare+software=0&Driver-updates+%E2%80%93+omschrijving=0&Duplex+bindende=0&Eerste+pagina+verschijnt+%28zwart+%2F+wit%2C+brief%2C+koude+start%29=0&Eerste+pagina+verschijnt+%28zwart+%2F+wit%2C+schrijven%2C+slapen%29=0&Eerste+pagina+verschijnt%2C+monochroom+%28A4%2C+standby%29=0&Eerste+pagina+verschijnt%2C+monochroom+%28kwarto%2C+standby%29=0&Formaten+afwijkende+media=0&Geluidsdruk=0&Geluidsdruk+omstander+%28tijdens+printen%29=0&Geluidskracht=0&Geluidsniveau%2C+buiten+gebruik=0&Geluisdsniveau+tijden+afdrukken=0&Gewicht+optioneel+%28metrisch%29=0&Gewicht+pallet=0&Gewicht+van+het+product+optioneel+%28imperiale%29=0&Hoogte%2C+in+bedrijf+%28brits%2Famerikaans%29=0&Hostmelding=0&Maximum+afmetingen+%28B+x+D+x+H%29=0&Maximum+invoercapaciteit+%28prioriteits-invoerlade%29=0&Mediaformaten+%28lade+2%29=0&Mediaformaten+%28lade+3%29=0&Mediagewicht+lade+2=0&Mediagewicht%2C+lade+3=0&Mediagewichten+per+papierpad=0&Mediatype+en+capaciteit%2C+lade+2=0&Mediatype+en+capaciteit%2C+lade+3=0&Minimum+systeemeisen+voor+Macintosh=0&Ondersteunde+mediaformaten=0&Ondersteunde+mediaformaten+voor+dubbelzijdig+printen=0&Printsnelheid+%28kleur%2C+normale+kwaliteit%2C+US+letter%29=0&Printsnelheid+%28zwart%2C+normale+kwaliteit%2C+US+letter%29=0&Printsnelheid+dubbelzijdig+%28zwart%2C+normale+kwaliteit%2C+US+letter%29=0&Printsnelheid+zwart+%28presentatie%2C+kwarto%29=0&Standaard+mediaformaten=0&Standaard+mediaformaten+%28dubbelzijdig%2C+brits%2Famerikaans%29=0&Stroomverbruik+%28indien+actief%29=0&SureSupply+ondersteuning=0&SureSupply+softwaredriver=0&SureSupply+type+verbinding=0&TEC+%28Typical+Electricity+Consumption%29+nummer=0&Technische+details=0&Upgrademogelijkheden=0&Verwerking+van+uitvoer=0&Afmetingen+%28BxDxH%29=0&Gewicht=0&Aanbevolen+mediagewicht=0&Mediagewicht+lade+1=0&Mediagewichten+per+papierpad=0&TEC+%28Typical+Electricity+Consumption%29+nummer=0&Aantal+papierladen=0&Maximaal+aantal+papierlades=0&Maximum+invoercapaciteit=0&Multifunctionele+lade+capaciteit=0&Standaard+invoercapaciteit=0&Kopie%C3%ABn+vergroten%2Fverkleinen=0&Akoestische+emissie+%28tijdens+kopi%C3%ABren+of+scannen%29=0&Formaten+afwijkende+media=0&Mediaformaten+%28lade+1%29=0&Mediagewicht+lade+2=0&Standaard+mediaformaten=0&Aanbevolen+mediagewicht=0&Aantal+dozen+per+pallet=0&Aantal+lagen+per+pallet=0&Akoestische+emissie+%28gereed%29=0&Automatische+papierherkenning=0&Duplex+bindende=0&Eerste+pagina+%28kleur%2C+schrijven%2C+slapen%29=0&Eerste+pagina+verschijnt+%28zwart+%2F+wit%2C+brief%2C+koude+start%29=0&Eerste+pagina+verschijnt+%28zwart+%2F+wit%2C+schrijven%2C+slapen%29=0&Eerste+pagina+verschijnt+%28zwart+%2F+wit%2C+schrijven%2C+warme+stroom%29=0&Eerste+pagina+verschijnt%2C+kleur+%28A4%2C+standby%29=0&Eerste+pagina+verschijnt%2C+kleur+%28kwarto%2C+standby%29=0&Eerste+pagina+verschijnt%2C+monochroom+%28A4%2C+standby%29=0&Eerste+pagina+verschijnt%2C+monochroom+%28kwarto%2C+standby%29=0&Geluidsdruk+omstander+%28tijdens+printen%29=0&Hoogte%2C+in+bedrijf+%28brits%2Famerikaans%29=0&Media=0&Mediatype+en+capaciteit%2C+lade+2=0&Mediatype+en+capaciteit%2C+lade+3=0&Printsnelheid+%28kleur%2C+normale+kwaliteit%2C+US+letter%29=0&Printsnelheid+%28zwart%2C+normale+kwaliteit%2C+US+letter%29=0&Printsnelheid+kleur+%28presentatie%2C+kwarto%29=0&Printsnelheid+zwart+%28presentatie%2C+kwarto%29=0&SureSupply+ondersteuning=0&SureSupply+softwaredriver=0&TEC+%28Typical+Electricity+Consumption%29+nummer=0&Compatibiliteit=0&Mac-compatibiliteit=0&Minimaal+benodigde+schijfruimte=0&Minimaal+RAM=0&Minimale+processor=0&Minimale+systeemeisen=0&Beheerprotocollen=0&Draadloze+opties=0&LAN+met+kabels=0&Lettertypen=0&Ondersteunde+beveiligingsalgoritmen=0&Opties+voor+dubbelzijdig+printen=0&Printmarge+boven+%28A4%29=0&Printmarge+links+%28A4%29=0&Printmarge+onder+%28A4%29=0&Printmarge+rechts+%28A4%29=0&Printtechnologie+resolutie=0&Supported+network+protocols+%28IPv4%29=0&Supported+network+protocols+%28IPv6%29=0&Wireless+LAN+type=0&WLAN+verbinding=0&Custom+media+length=0&Custom+media+width=0&Duplex+ondersteund+mediagewicht%2C+aanbevolen+%28metrisch%29=0&Envelopes+sizes=0&ISO+A-series+sizes+%28A0...A9%29=0&ISO+B-series+sizes+%28B0...B9%29=0&JIS+B-series+sizes+%28B0...B9%29=0&Maximale+printafmetingen=0&Multi-purpose+Tray+media+types=0&Multifunctionele+lade+papiergewicht=0&Non-ISO+print+media+sizes=0&Standard+tray+media+weight=0&Typen+printmedia=0&Duplex+printing=0&Gebruiksindicatie+%28Max.%29=0&Kleur=0&Maximale+maandelijkse+gebruiksindicatie%3A+tot=0&Maximale+resolutie=0&Netwerkgereed=0&Printtechnologie=0&Economisch+printen=0&Opwarmtijd=0&Printsnelheid+%28kleur%2C+standaard%2C+A4%29=0&Printsnelheid+%28zwart%2C+standaardkwaliteit%2C+A4%29=0&Tijdsduur+tot+de+eerste+pagina+%28kleur%2C+normaal%29=0&Tijdsduur+tot+de+eerste+pagina+%28zwart%2C+normaal%29=0&Aantal+printcartridges=0&Printkleuren=0&Printmarge+boven+%28A4%29=0&Printmarge+links+%28A4%29=0&Printmarge+onder+%28A4%29=0&Printmarge+rechts+%28A4%29=0&Standaard+printertalen=0&Stroomverbruik+%28indien+actief%29=0&Built-in+processor=0&Processor-kloksnelheid=0&Processorfamilie=0&Aanbevolen+temperatuur+bij+gebruik=0&Aansluiting=0&Aansluitingen=0&Afdrukbereik=0&Afmetingen+van+het+product+wanneer+het+open+is+%28LxBxD%29=0&Afmetingen+verpakking+%28B+x+D+x+H%29=0&Automatische+papierherkenning=0&Bekabelingstechnologie=0&Blue+Angel-compatibel=0&Capaciteit+cartridge=0&Compatibele+besturingssystemen=0&Compatibele+geheugenkaarten=0&Compatibele+producten=0&Draadloze+opties=0&Draadloze+technologie=0&Drivers+included=0&Elektromagnetische+compatibiliteit=0&Emulatie=0&Energie-effici%C3%ABntieklasse=0&Energy+Star+Typical+Electricity+Consumption+%28TEC%29=0&Envelopinvoer=0&Extra+papierladen=0&Gebundelde+software=0&Geheugentechnologie=0&Geheugenupgrade=0&Geluidsniveau+tijdens+kopi%C3%ABren=0&Geluidsproductie+%28in+werking%29=0&Geluidsproductie+%28standby%29=0&Handmatige+papierinvoer=0&Inclusief+lettertypes=0&Industriestandaard=0&Ingebouwde+webserver=0&Invoercapaciteit+%28lade+2%29=0&Invoercapaciteit+voor+enveloppen+%28primaire+lade%29=0&Kleur+van+het+product=0&Kleurenprinttechnologie=0&Lettertypen=0&Maat=0&Max.+printvolume+voor+A4-formaat+pagina%27s=0&Maximaal+aantal+papierladen=0&Maximum+afmetingen+%28B+x+D+x+H%29=0&Maximum+temperatuur+in+bedrijf=0&N-in-1+function+%28N%3D%29=0&Netwerkfuncties=0&Ondersteunde+gewicht%28en%29+media=0&Opties+voor+dubbelzijdig+printen=0&Papierverwerking=0&Papierverwerking+optioneel%2Finvoer=0&Papierverwerking+optioneel%2Fuitvoer=0&Papierverwerking+standaard%2Finvoer=0&Papierverwerking+standaard%2Fuitvoer=0&Printerbeheer=0&Printkwaliteit+%28kleur%2C+concept%29=0&Printkwaliteit+%28kleur%2C+presentatiekwaliteit%29=0&Printkwaliteit+%28zwart%2C+beste+kwaliteit%29=0&Printkwaliteit+%28zwart%2C+standaard%29=0&Printmarge+boven+%28A4%29=0&Printmarge+links+%28A4%29=0&Printmarge+onder+%28A4%29=0&Printmarge+rechts+%28A4%29=0&Printsnelheid+%28kleur%2C+presentatie%2C+A4%29=0&Printsnelheid+%28zwart%2C+presentatiekwaliteit%2C+A4%29=0&Printsnelheid+dubbelzijdig+%28kleur%2C+normale+kwaliteit%2C+A4%29=0&Printsnelheid+dubbelzijdig+%28Zwart%2C+normale+kwaliteit%2C+A4%29=0&Printtechnologie+resolutie=0&Relatieve+luchtvochtigheid+bij+opslag+%28geen+condensering%29=0&Soort+voeding=0&Standaard+aantal+invoerladen=0&Standaard+uitvoercapaciteit+voor+enveloppen=0&Standaard+uitvoercapaciteit+voor+transparanten=0&Stroomverbruik+%28indien+actief%29=0&Stroomvoorziening=0&SureSupply+ondersteuning=0&Verbinding+met+pc=0&Maximale+uitvoercapaciteit=0&Standaard+uitvoercapaciteit=0&Direct+printen=0&Optionele+connectiviteit=0&PictBridge+%E2%80%93+omschrijving=0&Standard+interfaces=0&USB+2.0+poort%28en%29=0&Toner+cartridge=0&Power+Led+indicator=0&Stand-by+LED=0&Afmetingen+verpakking+%28BxDxH%29=0&Gewicht+pakket=0
Heb al een optie om alleen te filteren met de meest gebruikte filters, maar soms moet je wat specifieker filteren en dan krijg je dus een form met daarin alle filter opties. Met als resultaat deze achterlijk lange url.
Hihi... lol.. da's inderdaad wel een lange url.
Maar als je dit soort parameter namen gebruikt dan vraag je er ook wel een beetje om: "Standaard+uitvoercapaciteit+voor+transparanten"
http://icecat.nl/p/samsung/ml-1665/laserprinters-5052179262302-ml-1665-4001236.html
Het is of nietszeggende getallen gebruiken of dit soort (lange) namen.
Inmiddels het systeem op POST draaien, maar lastig ivm doorsturen van overzicht met gekozen filters. En wanneer je op vorige in de browser klikt krijg je dat de pagina verlopen is natuurlijk..
Heb nog wel wat bedacht maar dan krijgen we ook nietszeggende url's:
POST -> gegevens in Database/Session opslaan met een uniek nummer -> redirect naar pagina met bijv. index.php?p=categorie&id=1&filter={uniek_nr}
Andere mogelijkheden cq tips?
De gegevens komen bij Icecat vandaan, bijv: Het is of nietszeggende getallen gebruiken of dit soort (lange) namen.
Inmiddels het systeem op POST draaien, maar lastig ivm doorsturen van overzicht met gekozen filters. En wanneer je op vorige in de browser klikt krijg je dat de pagina verlopen is natuurlijk..
Heb nog wel wat bedacht maar dan krijgen we ook nietszeggende url's:
POST -> gegevens in Database/Session opslaan met een uniek nummer -> redirect naar pagina met bijv. index.php?p=categorie&id=1&filter={uniek_nr}
Andere mogelijkheden cq tips?
Je zou kunnen kiezen om alleen de belangrijkste filters in de url mee te nemen, bijv. categorie.php?merk=Samsung&diagonaal=18
Alle andere filter opties doe je dan via POST / ajax.
Wellicht is dat een idee?
Dank voor de tip! Ga het doorvoeren!