在mod_rewrite之后将问号解析为正常字符

时间:2016-02-26 18:12:56

标签: php .htaccess mod-rewrite get

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

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

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

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

2 个答案:

答案 0 :(得分:0)

您可以使用PHP函数urlencode对用户名进行编码。例如,whoami?将成为whoami%3F。因此,您的网址将变为www.example.com/profiel/whoami%3F

然后,要检索您的用户名,您可以使用urldecode

这里有关于这两个功能的文档:

答案 1 :(得分:0)

您可以直接从THE_REQUEST变量

中捕获值来使用此规则
RewriteEngine On

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