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在?
之后。这样更有意义。这只是我的假设,从问题的代码中猜出来;)