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

sli*_*imb 4 regex .htaccess mod-rewrite

我需要逃避"?" 网址中的字符,以便与搜索/ why-is-it?-1.html等重写网址一起使用

我目前在.htaccess中有以下内容

RewriteEngine on
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [L]
Run Code Online (Sandbox Code Playgroud)

谢谢

ale*_*lex 6

请勿在您的网址中添加问号.该?保留用于查询字符串的开始.

要将其放在URL中,请将其编码为%3F.

阅读RFC这个答案.

更新

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

<?php

var_dump($_GET);

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

$slug = end($urlTokens);

var_dump($slug);
Run Code Online (Sandbox Code Playgroud)

输出

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

string(9) "inter?net"
Run Code Online (Sandbox Code Playgroud)

你可以看到$_GET很困惑.