Hallo,

Ik ben bezig om mijn website van gebruiksvriendelijke urls te voorzien. Ik loop echter tegen een probleem aan tijdens het submitten van een form.

zo ziet mijn form actie eruit :

<form action="http://www.website.nl/fietsen/search/"; method="GET">

het resultaat van de url word dan :

http://www.website.nl/fietsen/search/?q=zoekterm&extra=ja&submit=


onderstaand gedeelte moet dus nog mooier :

?q=zoekterm&extra=ja&submit=

uiteindelijke resultaat moet zijn : http://www.website.nl/fietsen/search/zoekterm

mijn htaccess :

RewriteEngine On

RewriteRule ^fietsen/(.*)/(.*)/(.*)/$ fietsen.php?p=$1&q=$2&extra=$3
RewriteRule ^fietsen/(.*)/(.*)/$ fietsen.php?p=$1&q=$2
RewriteRule ^fietsen/(.*)/$ fietsen.php?p=$1
RewriteRule ^fietsen/$ fietsen.php [L]


iemand enig idee hoe ik dit werkend kan krijgen ? Het gaat dus puur om de url die als output uit het GET formulier komt, de rest is in orde.

ps. op onderstaande link staat de waarschijnlijke oplossing, maar die krijg ik niet werkend. Ze maken daar gebruik van RewriteCond :

link:

http://www.talkincode.com/using-mod_rewrite-on-form-parameters-89.html

hun code :

RewriteCond %{REQUEST_URI} /search.php$
RewriteCond %{QUERY_STRING} ^q=([A-Za-z0-9\+]+)&s=Search$
RewriteRule ^(.*)$ /s-%1? [R=301,L]

RewriteRule ^s-(.*)$ /search.php?q=$1&s=Search&a=1 [L]
Dat gaat je niet lukken. Een formulier dat je verzend via de GET methode, krijgt altijd zo'n soort output in de url, daar doe je niets aan.

Je zou natuurlijk ook gewoon de POST methode kunnen gebruiken, dan wordt er helemaal niets meer aan de url verandert.
ja dat heb ik geprobeerd, en POST werkt ook prima, alleen heb je dan het irritante feit dat indien je de pagina ververst je zo'n POST melding krijgt

Daarnaast is het kwa zoekmachine optimalisatie van belang dat de zoekterm in de url verschijnt zodat hij hopelijk ook een hogere ranking krijgt...

ik heb echt het hele internet afgezocht en voor zover ik op de link die in mijn eerste post staat kan zien is het wel mogelijk met wat RewriteCond condities. Het hoe en wat is me alleen niet duidelijk ondanks de uitleg op die site
Het kan wel. Dan zou je allereerst de lelijke url met mod-rewrite moeten redirecten (met de flag [R]) naar de mooie url en vervolgens de mooie url weer onzichtbaar door laten verwijzen naar de lelijke url.

Maar goed, dit is natuurlijk wel erg dubbelop allemaal en aangezien het zoekresultaten betreffen heb je er waarschijnlijk nog niet erg veel aan als je naar SEO kijkt. Er staan namelijk nergens links op je website die naar deze zoekresultaten verwijzen en dus kan een zoekmachine als google deze urls nog steeds niet indexeren.

Als je dat zou willen, dan zou je ook een pagina op je website moeten hebben waar jij alle urls die het resultaat zijn van een zoekopdracht plaatst zodat google deze kan indexeren...
Nevermind!
Je zou het zo kunnen doen: (Even een simpel opzetje)

<script>
function search(q, extra)
{
  document.location.href = 'http://www.site.nl/search/'+q+'/'+extra;
}
</script>
Q: <input type="text" name="q" id="search-q" /><br />
Extra: <input type="text" name="extra" id="search-extra" /><br />
<input type="button" onclick="search(document.getElementById('search-q').value, document.getElementById('search-extra').value)" value="Search!" />
iedereen bedankt voor de reacties. een extra script zoals douwe aangeeft is mij iets te omslachtig...toch bedankt

ik ga kijken of ik toch een andere oplossing kan vinden
Robin,
Een andere oplossing die precies doet wat jij wilt zul je waarschijnlijk niet vinden, aangezien deze er volgens mij niet is.
Je zegt dat mijn script omslachtig is omdat je 'een extra script' nodig hebt. Dit klopt, maar is nog steeds veel simpeler dan alle code die hier (http://www.talkincode.com/using-mod_rewrite-on-form-parameters-89.html) staat. Het is aan jou natuurlijk, maar ik denk niet dat je een makkelijkere oplossing zult vinden.
ja ben ook bang van niet...heb voorlopig toch maar de POST methode gebruikt in het formulier.

ik heb echter nog 1 vraag, namelijk of het mogelijk is om van :

http://www.website.nl/fietsen/search/zoekterm/extra/

dit te maken :

http://www.website.nl/fietsen/search/zoekterm/

ik heb nu :

RewriteRule ^fietsen/(.*)/(.*)/(.*)/$ fietsen.php?p=$1&q=$2&extra=$3

dus ik bedoel zeg maar of ik "q" en "extra" kan samenvoegen tot /zoekterm/ in plaats van /zoekterm/extra/

--------------------------------------------
vraag 2
--------------------------------------------

kan ik overigens de volgende 2 samenvoegen in htaccess ?

RewriteRule ^fietsen/(.*)/$ fietsen.php?p=$1
RewriteRule ^motoren/(.*)/$ motoren.php?p=$1

door het volgende te doen :

RewriteRule ^(.*)/(.*)/$ $1php?p=$2

als ik namelijk 20 categorieen heb waarvan ik mooie urls wil maken dan word mijn htaccess file wel erg groot of is dat geen probleem ?


Antwoord 1: nee, dat lijkt me niet. Je kunt toch niet zomaar twee parameters samenvoegen tot 1 parameter...

Antwoord 2: ja, dat zal wel werken. Alleen zul je nog wel even een . tussen $1 en 'php' moeten plaatsen.

Reageren