[htaccess] Modrewrite met ?
Ik ben bezig met ModRewrite mijn url's mooi maken, maar ik loop nu vast op een stuk.
De regel:
Code (php)
1
RewriteRule ^poll/([0-9]*)/[a-zA-Z0-9-\?]*/([0-9]*|last)/delete=([0-9]*)$ bekijk_poll.php?pollid=$1&p=$2&delete=$3
Dus ik wil naar zoiets gaan: http://site.nl/poll/18/Wat-vind-je-van-deze-website?/delete=79
Maar dat werkt niet ivm het vraagteken. Als ik het vraagteken weghaal werkt het wel en ik heb toch gewoon het vraagteken ge-escaped? Hoe moet het wel?
Gewijzigd op 01/01/1970 01:00:00 door Kay Kay
verder is dit niet zo mijn straatje, dus kan je verder niet helpen.
Volgens mij ziet Apache dat wat na je vraagteken komt ook niet als URL binnen mod_rewrite, maar als QUERY_STRING. De url is dan tot en met '...ze-website' en je querystring is '?/delete=79'.
Ik zou zeggen, gebruik gewoon geen vraagtekens of andere "vreemde" of gereserveerde tekens in je URL.
//edit Ik heb deze functie gemaakt:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
function tourl($string)
{
$tostripe = array(" ", "+", "_");
$tonothing = array("?", "!", ",", ".","*","@","$","%","^","&", "(",")",";",":","'","\"", "\\", "|", ">", "<","~","`","");
return rawurlencode(str_replace($tonothing, "", str_replace($tostripe, "-", $string)));
}
{
$tostripe = array(" ", "+", "_");
$tonothing = array("?", "!", ",", ".","*","@","$","%","^","&", "(",")",";",":","'","\"", "\\", "|", ">", "<","~","`","");
return rawurlencode(str_replace($tonothing, "", str_replace($tostripe, "-", $string)));
}
Kan het simpeler? Volgens mij is er geen functie die al die tekens weghaalt?
Gewijzigd op 01/01/1970 01:00:00 door Kay Kay
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function make_url_friendly($string)
{
$string = strval($string);
$string = strtolower($string);
$string = preg_replace('{[^a-z0-9]}', '-', $string);
$string = preg_replace('{\-+}', '-', $string);
return trim($string, ' -');
}
?>
function make_url_friendly($string)
{
$string = strval($string);
$string = strtolower($string);
$string = preg_replace('{[^a-z0-9]}', '-', $string);
$string = preg_replace('{\-+}', '-', $string);
return trim($string, ' -');
}
?>
Hij vervangt alle niet-standaard tekens door een streepje, en zorgt ervoor dat er nooit meerdere streepjes achter elkaar staan, of aan het begin of eind.