哪个Web服务器有更好的重写语法,模仿Apache的?

由于大多数开源项目包括mod_rewrite规则与Apache的工作,我需要能够将它们转换为lighttpdnginx的工作。 哪个Web服务器允许我将规则完全转换为Apache的等价物? 如果两者都可以完全转换哪一个有更好的语法和更好的模拟Apache的高级选项?

例如,我将使用Wordpress的.htaccess。

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 

如果你试图保留重写规则,nginX似乎是要走的路。

这可以这样做:

 if (!-e $request_filename) { rewrite ^([_0-9a-zA-Z-]+)?(/.*) $2 break; rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last; rewrite ^ /index.php last; } 

但似乎nginX的力量是有较简单的规则,所以这可能是一个更好的方法来取代:

 if (!-e $request_filename) { rewrite ^ /index.php last; } 

为了给下一个访问者做一个完整的答案,lighttpd确实支持重写规则,虽然它们不直接支持-f和-d标签的等价物来首先validation同名文件和目录的存在。

目前有三种解决scheme:

  1. 等到function985被执行到标准分配中,这通常在下一个1.4.23中发生。 或自行修补你自己的版本。
  2. 使用lighttpd的mod_magnet来testing。
  3. 将您的静态文件放在一个固定目录(如媒体)中,并为此目录设置例外,例如:

     $HTTP["host"] == "yoursite" { # all other config here ... alias.url = ( "/medias" => "/var/www/yoursite/public/medias" ) url.rewrite-once = ( "^/medias/(.*)" => "$0", "^/(.*)$" => "/index.php/$1", "^/$" => "/index.php", ) } 

也许看“切诺基”networking服务器。 它是一个轻快,快速的替代Apache,并有一些相当不错的function。

不pipe哪个“光”networking服务器更快(他们都快得多,然后阿帕奇)..我会说这个切诺基,pipe理Web界面是非常容易的。 显然,因为它是基于networking的,所以configuration与apache非常不同。 我会把它称为一个愉快的不同,而不是一个恼人的不同。

但在一天结束的时候,只有Apache是​​Apache。 Apache的优势在于它的AAA级灵活性。