我有史以来第一次使用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;
}
标签:nginx,url-rewriting 来源: https://codeday.me/bug/20190923/1814347.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。