2009-08-12 86 views
5

将我的Kohana项目上传到我的Godaddy服务器后,我注意到我的标准.htaccess文件没有足够的工作来提供干净的URL。一些指导后,我结束了以下规则:

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

这让我漂亮的URL重新工作,但今天我发现,它可能打破我的内部搜索引擎,它也使用GET风格变量:

/search?terms=php 

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

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

回答

8

也许使用QSA在你的RewriteRules,像这样:

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

manual of mod_rewrite(引用):

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

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

可能有助于(你的具体情况没有测试,但我记得有这个前一段时间使用,某种问题,像这样的)

+0

工作。在我接受之前,我会等待并让其他人参与(因为我对htaccess知之甚少,因此如果这是最好的解决方案)。谢谢! – Sampson 2009-08-12 19:04:05

+0

没问题:-)不客气! – 2009-08-12 19:20:58

1

我想你可以加上:RewriteCond $1 !^(search)或者这样的一个变种。

0

如果你想使用标准的做法,并没有查询字符串你只需要按照这些步骤操作,它就像localhost一样工作,而且你不需要改变重写规则。

转到您的GoDaddy的帐户,文件管理器 - >的WebRoot目录 - >创建php5.ini如果它不存在和地点下面一行是:cgi.fix_pathinfo = 1

现在,您需要重新启动Web过程:

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

现在您可以使用URI_PROTOCOL作为Auto。