【发布时间】:2015-08-11 09:08:06
【问题描述】:
我希望将所有带下划线的 URL 重定向到它们的等效虚线。
例如/nederland/amsterdam/car_rental 变为 /nederland/amsterdam/car-rental。为此,我使用了这里描述的技术:How to replace underscore to dash with Nginx。所以我的位置块匹配到:
location ~ (_)
但我只想对/admin 命名空间中的网址不执行此操作。为了做到这一点,我尝试将正则表达式与否定查找结合起来:Regular expression to match a line that doesn't contain a word?。该位置现在匹配:
(?=^(?!\/admin))(?=([^_]*))
Rubular 报告字符串 /nederland/amsterdam/car_rental 以匹配正则表达式,而 /admin/stats_dashboard 不匹配,正如我想要的那样。但是,当我将此规则应用于 nginx 配置时,该站点最终会进入重定向循环。有什么我忽略的吗?
更新:我实际上不想重写 /admin 命名空间中的任何内容。下划线到破折号的重写应该只发生在/admin 命名空间中not的所有 URL。
【问题讨论】: