将我的Kohana项目上传到我的Godaddy服务器之后,我注意到我的标准.htaccess文件无法提供足够的干净URL。经过一些指导,我最终得到了以下规则:
RewriteRule .* index.php?kohana_uri=$0 [PT,L]
这让我的好网址再次运行,但今天我发现它可能会破坏我的内部搜索引擎,它也使用GET风格的变量:
/search?terms=php
脚本找不到这些值。它们位于我的开发服务器上,它没有修改过的RewriteRule,但是没有使用RewriteRule的Godaddy服务器。
我是否正确地假设该规则打破了任何脚本从$ _GET读取的能力,如果是这样,我该如何解决这个问题?
答案 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作为自动。