+-

我有史以来第一次使用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替换下划线 - 乐贴网