Kohana,.htaccess和$ _GET

时间:2009-08-12 18:45:02

标签: php .htaccess get kohana mod-rewrite

将我的Kohana项目上传到我的Godaddy服务器之后,我注意到我的标准.htaccess文件无法提供足够的干净URL。经过一些指导,我最终得到了以下规则:

RewriteRule .* index.php?kohana_uri=$0 [PT,L]

这让我的好网址再次运行,但今天我发现它可能会破坏我的内部搜索引擎,它也使用GET风格的变量:

/search?terms=php

脚本找不到这些值。它们位于我的开发服务器上,它没有修改过的RewriteRule,但是没有使用RewriteRule的Godaddy服务器。

我是否正确地假设该规则打破了任何脚本从$ _GET读取的能力,如果是这样,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:8)

也许在你的rewriterules中使用QSA,如下所示:

RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L]

请参阅manual of mod_rewrite(引用):

  

'qsappend | QSA'(查询字符串追加)

     

此标志强制重写引擎附加查询字符串部分   取代字符串的   现有的字符串,而不是替换   它。如果要添加更多内容,请使用此选项   通过重写将数据写入查询字符串   规则。

可能有帮助(没有在你的特定情况下进行测试,但我记得前一段时间已经使用过这个问题,比如这个问题)

答案 1 :(得分:1)

我认为您可以添加:RewriteCond $1 !^(search)或其他变体。

答案 2 :(得分:0)

如果你想使用标准练习而没有查询字符串,你需要按照这些步骤进行操作,就像localhost一样,你不需要改变重写规则。

转到您的godaddy帐户文件管理器 - > WebRoot目录 - >如果它不存在则创建php5.ini并放置以下行:cgi.fix_pathinfo = 1

现在您需要重新启动Web Process:

1。)登录您的客户经理。 2.)单击“虚拟主机”。 3.)在要使用的主机帐户旁边,单击“启动”。 4.)在Stats&监视器部分,单击“系统进程”。 5.)在左侧列表中,单击要查看的进程,或单击“所有进程”以一次查看所有进程。 6.)要结束进程,请单击工具栏上的相应结束按钮。

现在您可以使用URI_PROTOCOL作为自动。