mod_rewrite 后将问号解析为普通字符

2022-01-04 00:00:00 get php .htaccess mod-rewrite

所以这可能听起来很奇怪,但是我目前有 mod_rewrite 设置来传递 2 个变量.

So this may sound weird, however I currently have mod_rewrite set-up to pass 2 variables through.

RewriteRule ^profiel/(.*)$ index.php?p=profiel&user=$1

在第二个变量 (&user=) 中,它传递一个用户名,该用户名是通过 PHP 中的 GET 检索到的.但是,某些用户名中可能带有问号.但是,如果是这种情况,问号将不会传递给 GET 变量.(例如:www.example.com/profiel/whoami?"最终只是whoami"而不是whoami?")

In the second var (&user=), it passes a username which is retrieved through GET in PHP. However, some of the usernames can have question marks in them. However if this is the case, the question mark won't be passed to the GET variable. (For example: "www.example.com/profiel/whoami?" ends up as just "whoami" instead of "whoami?")

老实说,我不知道如何解决这个问题.任何帮助都会很棒!

I honestly don't know how to solve this problem. Any help would be great!

推荐答案

您可以通过直接从 THE_REQUEST 变量中捕获您的值来使用此规则:

You can use this rule by capturing your values directly from THE_REQUEST variable:

RewriteEngine On

RewriteCond %{THE_REQUEST} /(profiel)/(S+)s [NC]
RewriteRule ^profiel/ index.php?p=%1&user=%2 [L,NC]

相关文章