1

也许我正在尝试做一些不可能的事情,或者我错过了一些完全明显的事情。

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

^/report/user?(.*)$ ./report/user.php?userid=$1 [L,NC]

我已经尝试逃避抛出和内部服务器错误的?使用/\?

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

4

2 回答 2

2

也许你可以尝试:

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

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

于 2012-04-27T19:25:57.660 回答
1

好的,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) 是在其中编程的,但它仍然是一个不错的工具。

于 2012-04-27T19:06:06.320 回答