我在使用 mod_rewrite 时遇到了一些困难,怀疑自己犯了一个基本错误。
我的目标是在我的服务器上设置一个规范形式,以便所有访问(通过域或 IP 地址)都不会变化到 https:// 和 www 子域。例如https://www.example.com
这是我的重写规则:
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^99\.100\.101\.102
RewriteCond %{HTTP_HOST} ^example\.com [nc]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Force https
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
这似乎有效,除了: https://example.com ... 它没有使用 www. 子域名重新重写,并且触发证书警告。
我犯了什么小学生错误?:-)
/沃伦
答案1
如果我在开头添加这个,你的文件就可以正常工作
RewriteEngine on
但我猜你已经mod_rewrite
默认启用了。
由于您使用永久 301 标头,因此可能是早期版本规则引起的浏览器缓存问题..?
您是否尝试过重置浏览器缓存?或者尝试过其他以前没用过的浏览器?
您还可以尝试[OR]
在第一个条件的末尾添加:
RewriteCond %{HTTP_HOST} ^99\\.100\\.101\\.102 [OR]