0

我正在为我正在编写的几个 PHP 脚本编写一些我自己的规则,即使我对正则表达式几乎没有经验。注意:很少。

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

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

我目前正在这样做:

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

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

一旦我知道如何做到这一点,我就可以弄清楚其余的,但是对于正则表达式的新手,我不知道从哪里开始。

任何帮助将不胜感激。

编辑: 我已经给了这些机会:

"^/(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"

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

4

2 回答 2

1

我似乎已经通过以下表达式实现了我正在寻找的东西:

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

然后我只是

trim( $_SERVER['argv'] ,"/")

在 index.php 中获取蛞蝓。

于 2009-03-24T04:10:01.030 回答
0

试试这个:

url.rewrite-once = (
    "^/(index\.php|admin|config|images|lib|template)" => "$0",
    "^/(.*)$" => "/index.php?$1"
)
于 2009-03-23T12:34:27.940 回答