5

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

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

这让我的 nice-URLs 再次工作,但今天我发现它可能会破坏我的内部搜索引擎,它也使用 GET 样式变量:

/search?terms=php

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

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

4

3 回答 3

8

也许在您的重写器中使用 QSA,如下所示:

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

请参阅mod_rewrite 的手册(引用):

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

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

可能会有所帮助(未在您的特定情况下进行测试,但我记得前段时间曾使用过此功能,用于解决此类问题)

于 2009-08-12T18:51:25.493 回答
1

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

于 2009-08-12T18:50:58.740 回答
0

如果您想使用标准实践并且没有查询字符串,您只需按照这些步骤操作,它就可以像 localhost 一样工作并且您无需更改重写规则。

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

现在您需要重新启动您的 Web 进程:

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

现在您可以将 URI_PROTOCOL 用作 Auto。

于 2013-10-13T04:10:48.060 回答