使用 mod_rewrite 支持规范 URL 时出现问题

使用 mod_rewrite 支持规范 URL 时出现问题

我在使用 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]

相关内容