form action to rewriterule

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michael -

Michael -

13/07/2010 23:43:09
Quote Anchor link
Hey,

Ik heb net even rewriterule aan m'n site toegevoegd en nou heb ik een form met method=get. Als je wat intypt en zoekt krijg je zoeken.php?q=hier+wat+je+zoekt

Nu met rewriterule wordt dit "zoeken/?q=hier+wat+je+zoekt"
Wat ik wil is dat als je op de submit drukt deze vanzelf naar "zoeken/hier+wat+je+zoekt" gaat
De link "zoeken/hier+wat+je+zoekt" werkt wel, maar krijg het niet voor elkaar dat deze bij de submit hier naar toe gaat.

<form method="get" action="zoeken">
<input type="text" id="q" name="q"/>
<input type="submit" class="zoek" value=""/>
</form>

Edit:
Goedemorgen,

Ik heb een oplossing gevonden, maar het lukt me nog niet 100%

Ik heb nu de volgende regels toegevoegd:
RewriteCond %{REQUEST_URI} /zoeken$
RewriteCond %{QUERY_STRING} ^q=([A-Za-z0-9\+]+)&s=$
RewriteRule ^(.*)$ /zoeken/%1? [R=301,L]

Probleem 1:
De site staat lokaal in een mapje (bijv localhost/map/) maar bovenstaand stukje stuurt mij na de zoekactie naar de hoofdmap waardoor mijn url wordt "localhost/zoeken/hier+wat+je+hebt+ingetypt" ipv "localhost/map/zoeken/hier+wat+je+hebt+ingetypt"
Q: Hoe los ik dit op dat 't niet uitmaakt of ie wel of niet in een map of in welke map die staat?

Probleem 1.1:
Nog een klein dingetje, maar behalve dat 't lelijk is is t niet zo erg, maar ik heb nu mijn submit de "name" "s" moeten geven, maar als ik "&s" uit die htaccess regel verwijder werkt 't niet meer.
Q: Is het mogelijk &s en name="s" weg te krijgen?
Gewijzigd op 14/07/2010 05:23:29 door Michael -
 
PHP hulp

PHP hulp

03/07/2020 00:58:19
 
Mick ForSure

Mick ForSure

14/07/2010 08:39:56
Quote Anchor link
probleem 1:

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

denk ik
 
P Lekensteyn

P Lekensteyn

14/07/2010 10:24:28
Quote Anchor link
Wat je ook kunt doen is een POST request maken, en dan forwarden ;)
Let op dat je bij zoekacties als '..' rare resultaten kunt krijgen.
 
Michael -

Michael -

14/07/2010 10:51:11
Quote Anchor link
Mick ForSure op 14/07/2010 08:39:56:
probleem 1:

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

denk ik

Thanks voor 't mee denken, maar de vraag was hoe ik kan zorgen dat ie altijd in elke map gewoon werkt, dus niet dat er standaard wat neer zet. Hij moet 't gewoon doen op m'n server en lokaal en nu moet ik steeds die laatste regel wijzigen.
De eerste regel moet trouwens dan geen map voor ;)

Peter datwiljewelwetenhe op 14/07/2010 10:24:28:
Wat je ook kunt doen is een POST request maken, en dan forwarden ;)
Let op dat je bij zoekacties als '..' rare resultaten kunt krijgen.

Ja, maar dan heb ik geen url meer met 't geen wat je zoekt erin?
Gewijzigd op 14/07/2010 10:51:56 door Michael -
 
P Lekensteyn

P Lekensteyn

14/07/2010 11:43:25
Quote Anchor link
Dat is niet waar.
Heel simpel voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$query
= '';
if($_SERVER['REQUEST_METHOD'] == 'POST'){
   if(isset($_POST['q']) && is_string($_POST['q'])) $query = $_POST['q'];
   header('Location: /zoeken/'.urlencode($query));
   exit;
}

$url = $_SERVER['REQUEST_URI'];
$qmPos = strpos($url, '?');
if($qmPos !== FALSE){
   $url = substr($url, 0, $qmPos);
}

$searchPos = strpos($url, '/search/');
if($searchPos !== FALSE){//als er een zoekwoord is
   $query = urldecode(substr($url, $searchPos+8));
}

?>

<form action="/zoeken" method="post">
<input type="text" name="q" value="<?php echo htmlentities($query);?>" />
<input type="submit" value="Zoeken" />
</form>
 



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.