.htaccess - 如何在 htaccess 中重写子域
问题描述
我试图简化用户对子域复杂性的感知,所以我想屏蔽子域。
我的目标如下:
当用户试图到达这里
blog.example.com/blog/whatever
我想将子域屏蔽为
example.com/blog/whatever
提供相同的内容,但隐藏了子域。
我尝试了以下但没有成功。
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^https://blog\.example.com\/blog [NC]
RewriteRule ^(.*)$ http://example.com/blog/$1 [R=301,L]
</IfModule>
更新:重写模块已启用
解决方案
RewriteCond %{HTTP_HOST} ^https://blog\.example.com\/blog [NC] RewriteRule ^(.*)$ http://example.com/blog/$1 [R=301,L]
HTTPHost
标头(即HTTP_HOST
服务器变量的值)仅包含主机名,即。blog.example.com
. 它不包含完整的绝对 URL。
所以,你的规则应该是这样的:
RewriteCond %{HTTP_HOST} ^blog\.example\.com [NC]
RewriteRule ^blog($|/) https://example.com%{REQUEST_URI} [R=301,L]
这匹配 URL 路径/blog
或/blog/<whatever>
(但不/blog<something>
)并重定向到example.com
(+ HTTPS) 处的相同 URL 路径。REQUEST_URI
服务器变量包含以斜杠开头的根相对 URL 路径。
您正在重定向到 HTTP,但我认为这一定是 HTTPS?
您应该在测试之前清除浏览器缓存,并首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。
推荐阅读
- wso2 - wso2 emm 2.2.0 将 apk 推送到 android
- django - 有没有办法对查询集进行洗牌,使其每天显示不同的值?
- android - 父 ViewModel 与子 ViewModel 和 LiveData 共享变量
- shiny - 如何让用户名登录到shinyapps.io上托管的闪亮应用程序
- javascript - 聊天 React 中的消息顺序
- c# - 使用 aspnetcore 2.2 联合 Azure AD 登录后,User.Identity.Name 为空
- azure - 为什么新创建的 Azure 资源组需要数小时才能显示出来?
- c++ - C++ 二维数组
- sql - ORACLE SQL 用静态数字合并日期
- regex - 如何更改字符串中的不同子字符串?