将域重定向到子域 + 使其成为 https

re-direct a domain to a sub-domain + make it https

这有点奇怪:

我需要我的网站做两件事(其中一件已经在工作):

  1. 如果用户尝试通过 HTTP:// 访问该域,它将被替换为 https:// - 这是为了 google 中的 SEO,并让用户感到更安全-

  2. 用于加载网站的站点文件夹需要是站点的子域文件夹

奇怪的是,第二部分正在运行,我想通了 - 但是我不确定如何合并这两个请求:

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/ [L]

但我不确定如何让网站显示为

https://trippy.co.nz/

我试过:

RewriteEngine On
RewriteCond %{HTTP_HOST} update\.trippy\.co\.nz [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://update.trippy.co.nz/ [R,L]

但随后网址显示为:https://update.trippy.co.nz

我需要保持 https://trippy.co.nz/

这里的任何帮助都非常好,我知道这是一个奇怪的情况。

谢谢,

沃利

...but then the web address displays as: 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}/ [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 服务器变量而不是 </code> 反向引用在<em>替换</em>字符串中。</p> <p><code>R 本身就是一个临时 (302) 重定向。一旦您确认它工作正常,您可能想将其更改为 R=301(永久)。