Apache相当于lighttpd url.rewriteonce?

时间:2009-04-22 09:50:33

标签: apache mod-rewrite lighttpd

我有这样的应用程序入口点。

/app/index.php <-- this is the main dispatcher.

/ app /

下的应用程序特定文件夹
/app/todo/
/app/calendar/
/app/bugtrack/

每个应用程序文件夹都包含特定于应用程序的文件。

我想传递app下的所有请求以通过/app/index.php。

那样。

/app/todo/list/today -> goes to /app/index.php
/app/ -> goes to /app/index.php
/app/bugtrack/anything/else goes to /app/index.php

在我的lighttpd测试机器上,我可以通过编写这样的规则轻松地完成它。

url.rewrite-once = (
    "^\/app\/todo\/*"   => "/app/index.php",
    "^\/app\/calendar\/*"   => "/app/index.php",
    "^\/app\/bugtrack\/*"   => "/app/index.php",
)

现在需要使用.htaccess和mod_rewrite使其在Apache上运行。

但无论我做什么,它都无法正常工作。

我在/app/.htaccess

中写了以下内容
RewriteEngine on
RewriteRule .* index.php [QSA]

适用于/ app /和/ app / todo /,但例如/ app / todo / list /今天失败。

任何人都可以告诉我该怎么做?

1 个答案:

答案 0 :(得分:1)

RewriteEngine On
RewriteBase /app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

这样做的目的是,如果请求不是文件名或目录,请将其重写为index.php。然后查看$_SERVER[REQUEST_URI]