apache - 强制 www。即使没有 / 子域也无法工作
问题描述
我有一个站点 example.com 和一个子域,我想要以下重定向:
subdomain.example.com -> www.subdomain.example.com
example.com -> www.example.com
我使用以下代码
RewriteEngine On
# Force www. always and SSL
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301, L]
# Force SSL if already www.
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301, L]
现在的问题是subdomain.example.com不会重定向,但subdomain.example.com/ 会。
访问 example.com 时,我也会收到服务器错误,尽管它确实重定向到 www。正确。
这些重定向的重点是,我可以在根文件夹中的同一个 .htaccess 文件中更轻松地将子域重定向到 subdomain.com,我在一台服务器上有多个域。
解决方案
我认为您可以像这样将指令组合在一起:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteRule (.*) https://www.%1/$1 [R=301,L]
=> 检查 HTTPS 是否关闭,或者域名是否以 www 开头,然后重定向到https://www.whatever。
推荐阅读
- c# - 如何在asp.net mvc c#中区分我的表行?
- python - python自动滚动到打印输出顶部
- javascript - 想要获取数组的替代数字并在 Javascript 中反转它们
- python - python exec docker-compose up 从不阻塞拉取图像
- php - 登录数据库连接失败
- java - 如何解决这个 GPS 问题?
- mysql - 限制某些数据在同一个msql表中输入次数的mysql代码
- c# - 在 UWP 应用程序上启用/禁用驱动程序
- c# - WCF Rest 自托管证书安全服务返回 401 未经授权
- c - 在 Macro 或 typedef 的帮助下,C 中的有效表达式:(x) ((x) - 1)