首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我真的需要在我的RewriteRules [NC]?

问我真的需要在我的RewriteRules [NC]?
EN

Stack Overflow用户
提问于 2021-02-02 14:14:09
回答 1查看 53关注 0票数 1

在使用Apache作为重写代理时,我看到了下面这两个变体,我总是想知道为什么有些人会在RewriteRule的末尾添加NC标志。今天我决定不去想了,问大家:-)

在RewriteRule中没有比较,因此--据我理解--没有必要将重点放在字符串的情况上。我是对的,还是你有什么要为我学习的?

变体1:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} ^(?:www\.)?example-(?:foo|bar|baz)\.(?:com|de|es|fr|it|us)$ [NC]
RewriteRule ^/(.*)$ https://www.target.com/path/$1 [R=301,NC,L]

变体2:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} ^(?:www\.)?example-(?:foo|bar|baz)\.(?:com|de|es|fr|it|us)$ [NC]
RewriteRule ^/(.*)$ https://www.target.com/path/$1 [R=301,L]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-02 15:47:41

我确信:

代码语言:javascript
复制
RewriteRule ^/(.*)$ https://www.target.com/path/$1 [R=301,NC,L]

和

代码语言:javascript
复制
RewriteRule ^/(.*)$ https://www.target.com/path/$1 [R=301,L]

没什么区别。

信息: NC标志的意思是非大小写.

但是当你使用这样的东西时:

代码语言:javascript
复制
RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [R=301,NC]

这很重要!

当您不使用NC时,(.*\.(jpg|gif|png))$将只匹配:

代码语言:javascript
复制
example.jpg
example.png
example.gif

但是,当您将它与NC一起使用时,(.*\.(jpg|gif|png))$也会匹配:

代码语言:javascript
复制
example.JPG
example.jPG
example.Png
example.gIf
#etc....

基本上,它将匹配example后的字符,不管它们是否大写,都是小写。

即使是您的RewriteCond,如果您使用的是Linux,也不需要NC。

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} ^(?:www\.)?example-(?:foo|bar|baz)\.(?:com|de|es|fr|it|us)$ [NC]

在Linux上不能很好地工作。

但是,如果您使用的是Windows,则可能需要始终使用NC for RewriteCond。

但是,在一种情况下,在Linux中比较%{HTTP_HOST}时,可能总是需要添加NC标志。因为域不区分大小写:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} !www\.example\.com [NC]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66011462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档