在rewrite(lighttpd)之后隐藏子目录中的index.php

它是如何设置的

我有一个网站,这是设置为干净的url与Apache mod_rewrite是这样的:

RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L,QSA] 

该网站还使用了一个名为Cockpit的CMS,它位于我的公共目录下,它的干净的URL包含一个类似的.htaccess文件:

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [L] 

在这两种情况下RewriteEngine On也存在(当然)。

现在在Apache这导致我的网站的URL被重写这样的

 http://domain.com/a http://domain.bom/b 

和驾驶舱的url几乎一样:

 http://domain.com/cockpit/a http://domain.com/cockpit/b 

我正在调查所以我一直在考虑离开Apache的背后lighttpd,我已经搞乱了他们的mod_rewrite语法和configuration相当多,但我遇到了一个问题,驾驶舱url不完全清洁。 这是我如何在lighttpd上设置的:

 $HTTP["host"] == "domain.com" { server.document-root = "/var/www/domain.com/public_html" index-file.names = ( "index.php" ) $HTTP["url"] =~ "^(\/cockpit)(\/[a-zA-Z0-9\.]*)*$" { url.rewrite-if-not-file = ( "^(.*)$" => "/cockpit/" ) } else $HTTP["url"] !~ "^(\/cockpit)(\/[a-zA-Z0-9\.]*)*$" { url.rewrite-if-not-file = ( "^(.*)$" => "/index.php" ) } } 

这个configuration设置工作,但驾驶舱url现在是这些:

 http://domain.com/cockpit/index.php/a http://domain.com/cockpit/index.php/b 

我想摆脱url的index.php部分像Apache一样,但我一直无法得到这个工作正常。

任何人有关于此事的任何想法? 小号