Ko3 - URL重写问题 - 删除index.php

时间:2010-05-08 12:59:19

标签: url-rewriting kohana

我正在使用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

谢谢,我真的很感谢你的帮助,因为我一直试图解决这个问题好几天,这真的开始让我烦恼;)

2 个答案:

答案 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