我的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中是如何工作的。
答案 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]