我正在为我正在编写的一些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"
重写所有内容,包括我不想重写的文件夹。
答案 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"
)