$ _GET数组为空

时间:2011-02-11 09:57:19

标签: php apache .htaccess kohana kohana-3

我的Kohana 3应用程序使用了一些$ _GET参数。但是,当我部署应用程序时,我得到一个空白页面,其中只有文本“未指定输入文件”。通过更改我的.htaccess文件,我很快找到了这个看似常见问题的解决方案:

RewriteRule .* index.php/$0 [PT,L]

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

但是现在我的$ _GET数组已经丢失了所有传递的参数。任何不需要$ _GET的页面都可以正常工作。我对.htaccess文件不是太好了,但从我所知道的,添加了?用uri替换了$ _GET数组。

我也试过

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

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

但无济于事。

下面是我的.htaccess文件(大部分与example.htaccess相同)

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php?$0 [PT,L]

我发现最接近解决方案的是这篇文章: http://forum.kohanaframework.org/discussion/comment/4857/#Comment_4857 然而,这似乎是旧版本的Kohana,我不确定这在Kohana v3中是如何工作的。

3 个答案:

答案 0 :(得分:6)

使用QSA(查询字符串追加)应该有所帮助:

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

答案 1 :(得分:3)

我必须对K03 example.htaccess进行两处更改才能使其正常工作:

RewriteRule ^(application|modules|system)/ - [F,L]而不是

RewriteRule ^(?:application|modules|system)\b - [F,L](提供内部服务器错误)

RewriteRule .* index.php [L]而不是

RewriteRule .* index.php/$0 [PT](它给出了无输入文件指定的消息。)

这是K03的.htaccess文件:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
#RewriteBase /

# Protect hidden files from being viewed

    Order Deny,Allow
    Deny From All

# Protect application and system files from being viewed
RewriteRule ^(application|modules|system)/ - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php [L]

答案 2 :(得分:0)

得到完全相同的错误,我认为是由于我的apache在fastcgi模式下工作的事实。 任何来自上面使用htaccess规则的解决方案都适用于我,但通过网络搜索我发现了这个规则:

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

只需用旧的替换它: RewriteRule .* index.php/$0 [PT,L]