我正在使用Kohana 3开发一个网站(我第一次使用框架)。在本地,一切都很完美。目前,我有一个默认的模板控制器,一个多语言支持,我的'index.php'被正确删除。所以在进一步研究之前,我测试了它是否在我的服务器上工作,并且我得到了无限循环。
我按照非官方wiki的教程进行了多语言实现:http://www.kerkness.ca/wiki/doku.php?id=example_of_a_multi-language_website
如果未在uri中指定语言,则会重定向到默认语言,因此我认为问题可能来自那里,即使它在本地工作,所以我删除它以查看没有重定向会发生什么。现在,我可以看到我的主页,但无论网页浏览器中的uri是什么,都会始终调用主页。我在我的主视图中插入以下行来检查uri是什么: request :: instance() - > uri()并且有效地,uri总是:/ en / home /
我把index.php放回(在bootstrap中),一切都运行正常,即使重定向到默认语言。
我的第一个猜测是uri没有被正确重写,所以我试图改变.htaccess但没有成功......
这是我的.htaccess:
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /dev/
# 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)/ - [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]
(顺便说一句,我也尝试过非官方wiki中的其他RewriteRule,也不起作用)
其他信息: 主持人:WebHostingPad Apache:v2.2.11 PHP:5.2.9
激活Rewrite_Module
谢谢,我真的很感谢你的帮助,因为我一直试图解决这个问题好几天,这真的开始让我烦恼;)
答案 0 :(得分:3)
为了摆脱URL中的index.php,你唯一必须改变的是将Kohana :: init(bootstrap.php)中的'index_file'参数设置为FALSE(其他一切都可能导致错误)。
所以Kohana :: init看起来像这样;
Kohana::init(array(
'base_url' => '/',
'index_file' => FALSE,
));
如果它与原始.htaccess一起使用,则根本不需要更改它。
答案 1 :(得分:1)
问题来自$_SERVER['PATH_INFO']
,它没有返回任何值......
可以通过在php.ini中添加以下行来解决此问题:
cgi.fix_pathinfo=0