我一直在寻找互联网,但我找不到解决方案。
我一直在尝试将查询字符串作为另一个$ _GET值传递给php。
例如,localhost/find/book
会转换为index.php?url=find/book
但这对我的目的来说还不够。当我尝试执行类似localhost/find/book?cols=name,library
之类的操作时,我希望将其翻译为index.php?url=find/book?cols=name,library
,而是转换为index.php?url=find/book
,它只会省略第二个查询字符串。
我很确定我几个月前做过这件事并且有效。但现在它只是没有,我不知道为什么。
以下是我的重写规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
提前致谢。
答案 0 :(得分:1)
您已经使用的QSA
选项就是这样。
但是,没有第二个查询字符串,所以你的网址不会转换为:
index.php?url=find/book?cols=name,library
但改为:
index.php?url=find/book&cols=name,library
^ here
请注意,您必须注意输出有效的查询字符串(例如在php中使用urlencode
),否则您的应用程序可能不会按您的意图行事。例如,您的逗号应编码为%2C
,但您应该让urlencode
处理。