我正在使用Nginx来提供类似静态消息的页面。 在顶层有https://example.com/en/news/以及文章的概述。 单个项目的URL类似于: https://example.com/en/news/some-article : https://example.com/en/news/some-article
所有URL包含语言,即/en/或/de/ 。 我想创build一个规则,将不包含语言的请求redirect到正确的URL(该语言是基于可通过$lang获得的IP映射的)。
以下应该工作(例如):
/news/ --- redirect ---> /en/news/ /news/some-article --- redirect ---> /en/news/some-article
我的尝试看起来像这样
正则expression式的问题,以消除JavaScript恶意软件
如何grep在Linux命令行中以双正斜杠开始的行?
如何重命名文件夹中的所有文件,删除linux中的空格字符后的一切?
.htaccess重写规则改变下划线破折号
/ etc / passwd中的行的正则expression式validation
location ~* /news/.*$ { if ($request_uri !~* /(de|en)/$) { return 302 https://example.com/$lang/$request_uri; } }
到目前为止,这导致了无限的redirect。
Apacheconfiguration:正则expression式禁止访问以点开头的文件/目录
在bash文件中交换2个单词的最佳方式是什么?
批处理将reg查询命令的输出正则expression为一个variables
如何在Windows命令行中从类path中排除特定的jar文件?
sedreplace一组文件的string
您的解决方案似乎对我来说过于复杂。 测试$request_uri跟踪$将永远不会匹配重写的URI(因此循环)。
您可以使用前缀location来匹配以/news/开头的URI。
假设你已经为其他地方的$lang计算了一个值,这可能适用于你:
location ^~ /news/ { return 302 /$lang$request_uri; }
只有在配置中有可能冲突的正则表达式location块时,才需要^~修饰符。 请参阅此文档了解更多
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。