我正在使用 CodeIgniter 构建一个 PHP 应用程序。它类似于Let Me Google That For You
您在文本输入框中写一个句子,单击提交,然后您将被带到一个显示结果的 URL。我希望 URL 是人工可编辑的,并且相对简单。我已经绕过 CodeIgniter URL 路由,所以现在我的 URL 看起来像这样:
http://website.com/?q=this+is+a+normal+url
现在的问题是当句子包含特殊字符时,例如问号或反斜杠。这两种情况都与我当前的.htaccess
重写规则相混淆,即使在字符被编码时也会发生这种情况。
http://website.com/?q=this+is+a+normal+url? OR
http://website.com/?q=this+is+a+normal+url%3F
起作用的是双重编码。例如,如果我将问号编码为%253F
(其中 ? 编码为 %3F,% 符号编码为 %25)。此网址正常工作。
http://website.com/?q=this+is+a+normal+url%253F
有人知道我可以在这里做什么吗?有没有一种聪明的方法可以对输入进行双重编码?我可以写一个.htaccess
重写规则来解决这个问题吗?我在这里不知所措。以下是我目前为大家使用的重写规则。
RewriteEngine on
RewriteCond %{QUERY_STRING} ^q=(.*)$
RewriteRule ^(.*)$ /index.php/app/create/%{QUERY_STRING}? [L]
注意:CodeIgniter 的工作方式是他们有一个index/application/function/parameter
URL 设置。我现在正在为函数提供完整的查询字符串。