【问题标题】:Match url with uppercase letters except if it contains a filename like .jpg,.css,.js etc将 url 与大写字母匹配,除非它包含 .jpg、.css、.js 等文件名
【发布时间】:2018-07-13 22:40:03
【问题描述】:

我需要一个正则表达式,它可以匹配带有大写字母的 url,但如果它包含像 .jpg、.css、.js 等文件名则不匹配

我想将所有大写的 url 重定向到小写,但前提是它不指向文件资源。

【问题讨论】:

    标签: regex redirect nginx regex-negation


    【解决方案1】:

    尝试使用像 regexpal.com 这样的正则表达式可视化工具。

    这是一个正则表达式的示例,它近似于您正在尝试执行的操作:

    \w+\.(?:com|net)(?:/[A-Z]+){1,}[/]?(?:\.jpg|\.png|\.JPG|\.PNG){0}$
    
    • \w+\.(?:com|net) 捕获word.comword.net 形式的域。 (如果您还想捕获子域,则需要添加其他域或改进它。)
    • (?:/[A-Z]+){1,}[/]?捕获全大写目录,如 /FOO/BAR/,带有可选的尾部斜杠。
    • (?:\.jpg|\.png|\.JPG|\.PNG){0}$ 恰好捕获了个列出的扩展;您显然需要添加到这个扩展列表中。

    但也许要重新考虑您的路由;最好将所有资产保存在服务器上的专用目录中,这样您就可以在处理其他 URL 时简单地将任何请求传递给mysite.com/assets/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2017-07-22
    相关资源
    最近更新 更多