form action to rewriterule
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 -
RewriteCond %{REQUEST_URI} /map/zoeken$
RewriteCond %{QUERY_STRING} ^q=([A-Za-z0-9\+]+)&s=$
RewriteRule ^(.*)$ /map/zoeken/%1? [R=301,L]
denk ik
Let op dat je bij zoekacties als '..' rare resultaten kunt krijgen.
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
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.
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 -
Heel simpel voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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>
$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>