在Apache HTTPD官方文档中有关网址的非www转向www的举例中有这样一段
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) http://www.example.com/$1 [L,R,NE]
该段rewrite规则将诸如http://example.com/index.php...://www.example.com/index.php。
第一行的!(感叹号)表示非、[NC]表示大小写不敏感、反斜杠表示转引域名中间的.符号。
第三行的^表示可能以/(斜杠)开始、之后是任意字串,一直一结束,这个会配对上面的index.php,会将原始地址改写成http://www.example.com/index.php,且临时转向到本句结束、不转换特殊字符。
但是第二行的!^$是什么意思呢?字面上理解似乎是非开始结束?如果没有第二行代码,我觉得这个非www到www的域名转向也能成功不是吗?
第二行 其实就是域名不为空的,比如 : "!^a" 代表匹配不以xx开头的 "a$" 代表以a结尾的 ,!^$这个其实就是不为空的