我试图理解以下语法(参见下面的用法上下文):
RewriteCond %{SERVER_NAME} ^example\.com$
我的.htaccess文件中有上述内容(使用真实域名代替示例)。我想强迫它成为www.example.com。
该网站具有SSL,并且GoDaddy的SSL安装过程添加了以下SSL编码。因此,我尝试使用此编码,并使用SSL更改为强制使用www。
# BEGIN GD-SSL
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_USER_AGENT} ^(.+)$
RewriteCond %{SERVER_NAME} ^example\.com$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Header add Strict-Transport-Security "max-age=300"
</IfModule>
# END GD-SSL
我尝试添加mod重写规则来强制使用www并且它们无法正常工作。我认为问题在于RewriteCond%{SERVER_NAME} ^ example.com $ 这不是解决“www”。我以为我可能需要添加www。但是,我不确定这是否正确 这是改变ssl以强制URL中的WWW的解决方案吗?或者我是否需要完全做其他事情?
RewriteCond %{SERVER_NAME} ^www\.^example\.com$
非常感谢任何帮助。谢谢。
贝克答案 0 :(得分:2)
要在一行中与 www 和非www 主机匹配,您可以使用以下正则表达式模式:
^(www\.)?example\.com$
这符合 www.example.com 或 example.com 。
要强制使用ssl www,您可以使用:
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule (.*) https://www.example.com/$1 [L,R,NE]