我有一个重写地图,其中包含要重定向的域列表.目前我必须在重写地图中列出www.foo.com和foo.com.我想知道是否有办法在同一行中对www和非www进行重写检查.
# Rewrite Map foo.com file.PHP www.foo.com file.PHP # modrewrite RewriteCond ${domainmappings:%{HTTP_HOST}} ^(.+)$[NC] RewriteCond %1 !^NOTFOUND$ RewriteRule ^.*$www.domain.com/%1 [L,R=301]
我尝试过像(www.)%{HTTP_HOST}或^(www.)%{HTTP_HOST}之类的东西,但没有运气.
这应该这样做:
RewriteCond %{HTTP_HOST} ^(www\.)?(.+) RewriteCond ${domainmappings:%2} ^(.+)$[NC] RewriteRule ^ /%1 [L,R=301]
第一个RewriteCond将删除可选的www.字首.然后将余数用作第二个RewriteCond中重写映射的参数.
如果未找到匹配项,则纯文本文件重写映射将返回空字符串:
If the key is found,the map-function construct is substituted by SubstValue. If the key is not found then it is substituted by DefaultValue or by the empty string if no DefaultValue was specified.
因此,如果满足第二个条件(注意^(.)$),则找到匹配,%1将包含SubstValue(在本例中为file.PHP).
原文地址:https://www.jb51.cc/regex/356996.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。