mod rewrite met $_GET formulier probleem
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]
Je zou natuurlijk ook gewoon de POST methode kunnen gebruiken, dan wordt er helemaal niets meer aan de url verandert.
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
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...
Gewijzigd op 01/01/1970 01:00:00 door - -
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<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!" />
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!" />
ik ga kijken of ik toch een andere oplossing kan vinden
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.
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 ?
Gewijzigd op 01/01/1970 01:00:00 door Robin
Antwoord 2: ja, dat zal wel werken. Alleen zul je nog wel even een . tussen $1 en 'php' moeten plaatsen.