(LigHTTPd)RegExp重写规则

时间:2009-03-23 12:26:24

标签: regex lighttpd

我正在为我正在编写的一些PHP脚本编写一些自己的规则,即使我对regexp没什么经验。注意:很少。

基本上我想将除少数几个URL之外的所有URL作为参数传递给index.php,重写大多数在数​​据库中定义为slugs的URL。

ie:/ admin,/ config,/ images,/ lib和/ template存在,但我不想被重写。 但其他一切,我想作为参数传递给index.php。

我目前正在这样做:

url.rewrite-once = (
    "^/(.*)$" => "/index.php?$1"
)

与数据库slug的结合非常好,但它也重定向上面列出的文件夹。这些包含需要直接访问的文件,但我找不到任何描述如何从匹配中排除字符串的文件。

一旦我知道如何做到这一点,我可以弄清楚剩下的,但是对regexp不熟悉我不知道从哪里开始。

非常感谢任何帮助。

修改: 我已经给了这些镜头:

"^/(index\.php|admin|config|images|lib|template)" => "$0",

为哪个FF报告这些文件夹的无限重定向;

"^/(?!(admin|config|images|lib|template))(.*)$" => "$0"

除了文件夹之外的所有内容都不匹配;

"^/([^(admin|config|images|lib|template)]*)$" => "/index.php?$1"

同样,不会重写任何内容;

"^/(.*)$" => "/index.php?$1"

重写所有内容,包括我不想重写的文件夹。

2 个答案:

答案 0 :(得分:1)

我似乎通过以下表达式实现了我想要的目标:

"^/(?!(index\.php|admin|config|images|lib|template)).*$" => "/index.php?$0"

然后我

trim( $_SERVER['argv'] ,"/")
在index.php中

获取slu ..

答案 1 :(得分:0)

试试这个:

url.rewrite-once = (
    "^/(index\.php|admin|config|images|lib|template)" => "$0",
    "^/(.*)$" => "/index.php?$1"
)