我跟随.htaccess将域指向子文件夹。
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} site.com
RewriteCond %{REQUEST_URI} !folder_site/
RewriteRule ^(.*)$ folder_site/$1 [L]
如何更改RewriteCond %{HTTP_HOST} site.com
以包含www
作为可选匹配。
答案 0 :(得分:6)
RewriteCond %{HTTP_HOST} ^(?:www\.)?site\.com$
答案 1 :(得分:0)
第一行设置条件:仅当条件为真时,才会处理第二行。条件可以“翻译”为:“如果主机名不以www开头。”。正则表达式!^ www。意思是:
! =不是
^ =开始
。 =。 (反斜杠是转义字符,因为点在正则表达式中具有特殊含义,因此必须进行转义)
因此!^www\.
表示“不以www开头。”
最后一行是实际的重写规则:它再次使用正则表达式来匹配某些URL,然后将它们重写为其他内容。第一部分是正则表达式:
^(.*)$
这意味着:什么!你已经知道了^符号。 (。*)位表示零个或多个字符(点表示任何字符,星号表示零或更多)。最终的$意味着'结束'。
然后说了如何重写网址,
例如:
http://www.%{HTTP_HOST}/$1 [R=301,L]
%{HTTP_HOST}将被主机名替换(即anything.com)。
$ 1引用括号中正则表达式中匹配的任何内容,在本例中为所有内容。
[R = 301,L]表示“通知用户代理这是永久重定向(HTTP 301代码),并且不再处理任何重写规则(如果在此之后有任何重写规则)。” p>
如果你不熟悉正则表达式,这可能看起来有点抽象,随时可以询问更多细节。 :)