也许我正在尝试做一些不可能的事情,或者我错过了一些完全明显的事情。
我想要做的是重写以下内容:
^/report/user?(.*)$ ./report/user.php?userid=$1 [L,NC]
我已经尝试逃避抛出和内部服务器错误的?
使用/\?
。
有什么办法可以做到这一点?
也许我正在尝试做一些不可能的事情,或者我错过了一些完全明显的事情。
我想要做的是重写以下内容:
^/report/user?(.*)$ ./report/user.php?userid=$1 [L,NC]
我已经尝试逃避抛出和内部服务器错误的?
使用/\?
。
有什么办法可以做到这一点?
也许你可以尝试:
RewriteCond %{QUERY_STRING} ^([0-9]+)$
RewriteRule ^/report/user$ ./report/user.php?userid=%1 [L,NC]
如果您的用户 ID 是字母数字,则只需将最后一部分更改RewriteCond
为([0-9a-zA-Z]+)
好的,a?
是 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
所以可能不是你想要的
不确定查询字符串的结果如何,但它应该传输它。用 flag 试试看它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
如果你想要http://htaccess.madewithlove.be/可以在这里测试重写,只要记住它会翻转一次,所以可以测试基本的东西。我不认为QSA
(query string append) 是在其中编程的,但它仍然是一个不错的工具。