Lighttpd重写Codeigniter打破某些URL

时间:2012-02-13 20:22:45

标签: codeigniter mod-rewrite lighttpd codeigniter-2

我从apache迁移到lighttpd,从那时起某些URL中断了重写并给出了404. access.log中没有详细信息,error.log中有关实际URL被点击的详细信息。

这些工作: http://192.168.1.250/loop/rest/admin

但不是这些: http://192.168.1.250/loop/rest/admin/logs/file::log-2012-02-14.php

如果我跳过重写和使用 http://192.168.1.250/loop/rest/index.php?/admin/logs/file::log-2012-02-14.php

我得到了我想要的东西,

这是我的重写规则:

url.rewrite-once = (
 "/(.*)\.(.*)" => "$0",
 "/(css|files|img|js|stats)/" => "$0",
 "^/([^.]+)$" => "/loop/rest/index.php/$1"
)

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:4)

我在lighttpd上测试我的codeigniter应用程序时遇到了同样的问题

这对我有用:

  url.rewrite = (
      ".*\.(js|ico|gif|jpg|png|swf|css|html)$" => "$0",
      "^/(.*)$" => "index.php/$1"
 )

也许你可以试试这个设置:

 url.rewrite = (
          ".*\.(js|ico|gif|jpg|png|swf|css|html)$" => "$0",
          "^/(.*)$" => "/loop/rest/index.php/$1"
     )

确保你在顶部有一个未注释的mod_rewrite ..默认情况下,它前面有一个#。

答案 1 :(得分:0)

我找到了正确的规则:

首先请确保您的root指令指向您设置的CI的根目录。

root /var/www/loop;

然后这个位置指令将完全正常工作:

location /
  {
    if (!-e $request_filename)
    {
      rewrite ^/(.*)$ /index.php?/$1 last;
      break;
    }
  }