+-
url-rewriting – 如何用Nginx替换下划线
我有史以来第一次使用Nginx,基本上不了解它.

我需要在100 URL中用“ – ”替换“_”.我认为必须有一个简单的方法来使用Nginx,但在Google上找不到任何东西.

谢谢!

编辑:

我的网址是例如:http://www.mywebsite.com/this_category/page1.php

我需要这个成为:http://www.mywebsite.com/this-category/page1.php

最佳答案
从2013-04和2015年这两个问题的现有答案都相当不理想和丑陋 – 一个依赖于过多的复制粘贴并且不清楚错误处理/报告,另一个涉及为客户端提供不确定数量的不必要的301 Moved交互处理.

有一个更好的方法,从2013-02赛季到QA对的hidden in plain sight – 距离2013-04赛季这个问题仅仅几个月!它涉及依赖于http://nginx.org/r/rewrite指令的最后一个参数,这将导致nginx停止处理重写指令,如果匹配中的最后一个结果,并返回搜索每个修改的$uri的适当“新”位置,导致nginx内部重定向循环最多10次(例如,10个内部重定向,根据http://nginx.org/r/internal),如果超过10个循环的限制,则记录500内部服务器错误.

从某种意义上说,这个答案与原始答案类似,只是免费获得10倍的额外因子,从而减少了复制粘贴的要求.

# Replace maximum of 3 or 1 underscores per internal redirect,
# produce 500 Internal Server Error after 10 internal redirects, 
# supporting at least 28 underscores (9*3 + 1*1) and at most 30 (10*3).
location ~ _ {
    rewrite "^([^_]*)_([^_]*)_([^_]*)_(.*)$" $1-$2-$3-$4 last;
    rewrite "^([^_]*)_(.+)$" $1-$2 last;
    return 301 $uri;
}
点击查看更多相关文章

转载注明原文:url-rewriting – 如何用Nginx替换下划线 - 乐贴网