正则表达式 – 如何在重写中匹配www和非www?
发布时间:2020-12-14 06:26:39 所属栏目:百科 来源:网络整理
导读:我有一个重写地图,其中包含要重定向的域列表.目前我必须在重写地图中列出www.foo.com和foo.com.我想知道是否有办法在同一行中对www和非www进行重写检查. # Rewrite Mapfoo.com file.phpwww.foo.com file.php# modrewriteRewriteCond ${domainmappings:%{HTTP
我有一个重写地图,其中包含要重定向的域列表.目前我必须在重写地图中列出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中重写映射的参数. 如果未找到匹配项,则纯文本文件重写映射将返回空字符串:
因此,如果满足第二个条件(注意^(.)$),则找到匹配,%1将包含SubstValue(在本例中为file.php). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |