我想要一些帮助匹配以下网址。
/settings => /settings.php
/657_46hallo => /657_46hallo.php
/users/create => /users.php/create
/contact/create/user => /contact.php/create/user
/view/info.php => /view.php/info.php
/view/readme - now.txt => /view.php/readme - now.txt
/ => [NO MATCH]
/filename.php => /unknown.php
/filename.php/users/create => /unknown.php如果域名后的第一部分是以".php“结尾的文件名(参见最后两个示例),则应重定向到/unknown.php
我想我需要2个正则表达式1应该类似于:^/(a-zA-Z0-9_+)(/)?(.*)?$ 2捕获直接文件名"/filename.php“或"/filename.php/create/user”这样我就可以重定向到unknown.php
我得到的第一个正则表达式在第一部分几乎是有效的。==============================================
request url: http://domain.com/user/create
regex: ^/([a-zA-Z0-9_]+)(/)?(.*)?$
replace http://domain.com/$1.php$2$3
makes: http://domain.com/user.php/create问题是它也与http://domain.com/user.php/create匹配
如果有人能帮助我使用这两个正则表达式,那就太好了。
发布于 2011-06-01 16:39:41
发布于 2011-06-01 04:41:30
当你只有一把锤子的时候...
虽然这个问题可能可以用regexp来解决,但是它可能不适合这个任务,除非您有强制使用regexp的限制。
使用'/‘作为分隔符拆分字符串,查看第一个组件是否以'.php’结尾;如果是,则拒绝它,否则将‘.php’附加到第一个组件,并使用'/‘重新连接这些组件。
https://stackoverflow.com/questions/6193254
复制相似问题