正则表达式匹配不包含字符串但也包含其他字符串的URL

时间:2014-11-27 04:04:41

标签: regex .htaccess

我正在尝试匹配并替换特定文件夹中的资产网址,而不会影响我的.htaccess文件中的其他网址。事情上我有.htaccess方面,我只是苦苦挣扎以匹配正确的URL。

鉴于这三个网址:

  • http://nia.wp/wp-includes/fonts/tinymce.ttf

  • http://nia.wp/wp-content/plugins/fonts/Bootstrap-Shortcodes-for-WordPress.ttf

  • http://nia.wp/wp-content/themes/fonts/Bootstrap-Shortcodes-for-WordPress.ttf

我只想匹配最后一个(包含themes),以及/fonts/之后的所有内容

当前方法匹配所有内容:

RewriteRule /?fonts/(.*)$ wp-content/themes/ng-health/app/fonts/$1 [NC,L]

尝试使用否定前瞻,但不起作用:

http:\/\/.+(?!wp-includes|plugins)\/fonts\/(.*)(匹配所有内容:http://regexr.com/39vka

2 个答案:

答案 0 :(得分:1)

你快到了。

  • 使用后面的负面看法
  • ,而不是使用负向前看

正则表达式可以

http:\/\/.+(?<!wp-includes|plugins)\/fonts\/.*

示例:http://regex101.com/r/tE0dL9/1

更改

  • (?<!wp-includes|plugins)负面看后面。断言/fonts/wp-includes
  • 未提及plugins

答案 1 :(得分:0)

也试一试。

http:\/\/(?:(?!themes).)*themes\/fonts\/.*

查看演示: http://regex101.com/r/fW1iC9/1