【发布时间】:2009-01-25 19:12:06
【问题描述】:
我正在使用 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 设置。我现在正在为函数提供完整的查询字符串。
【问题讨论】:
-
你能把你的重写规则添加到问题中吗?
-
当然,原帖已经过编辑,包含了重写规则。
-
是否需要这样重定向请求?
标签: php .htaccess codeigniter redirect