mod rewrite met $_GET formulier probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robin

Robin

20/06/2008 20:22:00
Quote Anchor link
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]
 
PHP hulp

PHP hulp

17/01/2021 06:44:32
 
Joren de Wit

Joren de Wit

20/06/2008 20:29:00
Quote Anchor link
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.
 
Robin

Robin

20/06/2008 20:34:00
Quote Anchor link
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
 
Joren de Wit

Joren de Wit

20/06/2008 20:39:00
Quote Anchor link
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...
 
- -

- -

20/06/2008 21:10:00
Quote Anchor link
Nevermind!
Gewijzigd op 01/01/1970 01:00:00 door - -
 
Douwe

Douwe

20/06/2008 21:30:00
Quote Anchor link
Je zou het zo kunnen doen: (Even een simpel opzetje)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!" />
 
Robin

Robin

20/06/2008 21:37:00
Quote Anchor link
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
 
Douwe

Douwe

20/06/2008 21:41:00
Quote Anchor link
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.
 
Robin

Robin

21/06/2008 01:51:00
Quote Anchor link
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 ?
Gewijzigd op 01/01/1970 01:00:00 door Robin
 
Joren de Wit

Joren de Wit

21/06/2008 02:56:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.