我正在尝试使用regex
仅匹配不以其他字符串开头的字符串。据我所知以及 Stack Overflow 上的其他一些问题,我应该使用否定的前瞻性断言。但由于某种原因,它似乎不起作用。考虑以下三个字符串:
/match.jpg
match.png
excludedpath/no-match.gif
我希望我的正则表达式模式只匹配前两个字符串,因为最后一个字符串以excludepath/
. 我尝试过的是以下内容:
(?!excludedpath\/)(.*)\.(gif|jpg|png)$
我想在 Apache 的重写规则中使用这个正则表达式模式。基本上我想简单地加载所有图像(带有这三个扩展名),除非它们的格式为http://example.com/excludedpath/some-image.jpg
:
RewriteCond %{REQUEST_FILENAME} (?!excludedpath\/)(.*)\.(gif|jpg|png)$
RewriteRule ^(.*)$ $1 [L]
RewriteCond "/my/path/to/application/%{REQUEST_URI}" !-f
RewriteRule ^(.*)$ /index.php/$1 [L]
任何人都可以告诉我为什么它仍然匹配所有三个字符串:这个链接以及如何修复它?