我从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"
)
任何帮助都将不胜感激。
答案 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;
}
}