Mod rewrite mod_rewrite在重写的URL中包含问号

Mod rewrite mod_rewrite在重写的URL中包含问号,mod-rewrite,Mod Rewrite,也许我正试图做一些不可能的事情,或者我错过了一些显而易见的事情 我想做的是重写以下内容: ^/report/user?(.*)$ ./report/user.php?userid=$1 [L,NC] 我已尝试使用/\?转义?,但这会引发内部服务器错误 有什么办法可以做到这一点吗?好的,一个?是regex的1次还是0次,所以你要问的是r是有1次还是0次,然后抓取其他的一切。如果要将查询字符串捕获到另一个查询中(而不仅仅是传输),请尝试: RewriteRule ^/?report/user$ /

也许我正试图做一些不可能的事情,或者我错过了一些显而易见的事情

我想做的是重写以下内容:

^/report/user?(.*)$ ./report/user.php?userid=$1 [L,NC]
我已尝试使用
/\?
转义
,但这会引发内部服务器错误


有什么办法可以做到这一点吗?

好的,一个
是regex的1次还是0次,所以你要问的是
r
是有1次还是0次,然后抓取其他的一切。如果要将查询字符串捕获到另一个查询中(而不仅仅是传输),请尝试:

RewriteRule ^/?report/user$ /report/user.php?userid=%{QUERY_STRING} [L,NC]
。。。在本地机器上测试
?a=1&b=2
->
?userid=a=1&b=2
,所以可能不是您想要的

不确定查询字符串的结果如何,但它应该传输它。用
R
标志试试看它是什么样子。如果只想添加到查询字符串中,可以尝试:

RewriteRule ^/?report/user$ /report/user.php?userid=1 [L,NC,QSA]
。。在本地计算机上测试查询字符串
?a=1&b=2
->
?userid=1&a=1&b=2

仅更改位置而不更改查询不需要QSA

RewriteRule ^/?report/user$ /report/user.php [L,NC]
。。在本地计算机上测试查询字符串
?a=1&b=2
->
?a=1&b=2

如果你愿意,你可以在这里测试重写,只要记住它会滚动一次,所以你可以测试基本的东西。我不认为
QSA
(查询字符串附加)是用这两种语言编写的,但它仍然是一个不错的工具。

也许您可以尝试:

RewriteCond     %{QUERY_STRING} ^([0-9]+)$
RewriteRule     ^/report/user$ ./report/user.php?userid=%1 [L,NC]

如果您的用户ID是字母数字的,那么只需将
RewriteCond
中的最后一部分更改为
([0-9a-zA-Z]+)

您可以使用
%{QUERY\u STRING}
获取查询字符串,但错误可能是其他错误。指令的其余部分是什么?我唯一的重写规则就是这条规则,因此任何与之相关的规则:)
重写规则
模式与URL路径匹配,URL路径不包括查询字符串。啊,我甚至没有想过问是否只有userid在
之后。这样更有意义。这只是我的假设,从问题的代码中猜出来;)