如何逃避“?”在.htaccess中使用正则表达式来修改mod_rewrite

时间:2011-03-02 00:10:13

标签: regex .htaccess mod-rewrite

我需要逃避“?”网址中的字符,以便与搜索/为什么是它的重写网址一起使用?-1.html

我目前在.htaccess

中有以下内容
RewriteEngine on
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [L]

由于

1 个答案:

答案 0 :(得分:6)

请勿在网址中添加问号。 ?保留用于查询字符串的开头。

要将其放入网址,请将其编码为%3F

阅读RFCthis answer

更新

如果使用PHP(看起来像你),你可以这样做(请求的页面是index.php/inter?net)...

<?php

var_dump($_GET);

$urlTokens = explode('/', $_SERVER['REQUEST_URI']);

$slug = end($urlTokens);

var_dump($slug);

输出

array(1) {
  ["net"]=>
  string(0) ""
}

string(9) "inter?net"

您可以看到$_GET感到困惑。