debugginghtaccess重写规则; 第二个捕获组($ 2)为空

我已经看到了这个问题,为其他人,但在他们的情况下,他们的正则expression式有一个问题。 快速浏览regexpal.com向我表示,事实并非如此。 我有一个简单的htaccess文件,允许我将URL写为“.htm”或“.html”,而不是“.php”。 我刚刚发现这个脚本在处理查询string(?argument = value)时有问题。 这是我完整的.htaccess代码:

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.html?\??(.*)$ $1.php?$2 [nc] 

当我打印我的请求的查询string时,它总是空出来,当然,对array_key_exists的检查没有find我想要指定的id。 我不用Apache的工作,但我认为这将是非常简单的。

如果重要的话,这个htaccess应用在一个相对简单的XAMPP设置之上。 我不认为我甚至对httpd.conf文件做了什么。 我可以尝试提供任何其他人们认为可能相关的信息。

简化:

 RewriteRule ^(.*)\.html?\??(.*)$ $1.php?$2 [nc] 

对此:

 RewriteRule (.*)\.html?$ $1.php [NC,QSA] 

最初^是不必要的,因为.*与任何事物都已经匹配。 并且手动保留查询string是(a)有问题的,(b)完全不理智的,因为QSA标志 (查询string附加)将处理所有内部事件。