.htaccess - 将域重定向到子域 + 使其成为 https
问题描述
这有点奇怪:
我需要我的网站做两件事(其中一件已经在工作):
如果用户尝试通过 HTTP:// 访问域,则将其替换为 https:// - 这是用于 google 中的 SEO 并让用户感觉更安全 -
用于加载网站的站点文件夹需要是站点的子域文件夹
奇怪的是,第二部分正在工作,我想通了 - 但是我不确定如何合并这两个请求:
HTACCESS
RewriteEngine on
RewriteCond %{HTTP_HOST} ^trippy\.co\.nz$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.trippy\.co\.nz$
RewriteCond %{REQUEST_URI} !update.trippy.co.nz/
RewriteRule (.*) /update.trippy.co.nz/$1 [L]
但我不确定如何使网站显示为
我努力了:
RewriteEngine On
RewriteCond %{HTTP_HOST} update\.trippy\.co\.nz [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://update.trippy.co.nz/$1 [R,L]
但随后网址显示为:https ://update.trippy.co.nz
这里的任何帮助都会非常好,我知道这是一个奇怪的情况。
谢谢,
沃利
解决方案
...但随后网址显示为:
https://update.trippy.co.nz
您似乎正在重定向到子域本身,而不是子域的子目录,正如您在第一条规则中所做的那样。您也可能以错误的顺序放置指令 - 外部重定向需要先进行 - 否则您将公开子域的子目录,这似乎不是意图。
请尝试以下操作:
RewriteEngine On
# Redirect HTTP to HTTPS
RewriteCond %{HTTP_HOST} ^(www\.)?trippy\.co\.nz [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R,L]
# Rewrite all requests to the subdomain's subdirectory
RewriteCond %{HTTP_HOST} ^(www\.)?trippy\.co\.nz [NC]
RewriteRule !^update\.trippy\.co\.nz/ /update.trippy.co.nz%{REQUEST_URI} [L]
第二个规则块中不需要额外的条件,因为可以直接在 中执行检查RewriteRule
并使用REQUEST_URI
服务器变量而不是替换字符串中的$1
反向引用。
这R
本身就是一个临时(302)重定向。R=301
一旦您确认这工作正常,您可能希望将其更改为(永久)。
推荐阅读
- bluetooth - 在 Xamarin iOS 中未获得蓝牙授权提示
- spring-boot - 即使测试通过,KafkaTest 期间也会出现异常
- uitableview - iOS13 表格视图控制器顶部有超大填充的问题
- gitlab - Gitlab项目基于模板成员为空
- c# - 如何将 ASP.NET MVC 视图迁移到 Angular UI
- jquery - 如何从多选列表框中删除“全选”选项
- android - 像使用数据库一样使用 .txt 文件
- amazon-web-services - 与数据传输相关的 AWS 账单问题
- vue.js - 单击vuetify中的按钮时如何显示日期选择器?
- javascript - 模态组件使用