【问题标题】:re-direct a domain to a sub-domain + make it https将域重定向到子域 + 使其成为 https
【发布时间】:2020-10-23 09:32:26
【问题描述】:

这有点奇怪:

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

  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/$1 [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/$1 [R,L]

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

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

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

谢谢,

沃利

【问题讨论】:

    标签: .htaccess ssl https hosting web-hosting


    【解决方案1】:

    ...但随后网址显示为: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 反向引用 em> 字符串。

    R 本身就是一个临时 (302) 重定向。确认一切正常后,您可能希望将其更改为 R=301(永久)。

    【讨论】:

    • 这 100% 有效,我需要它来工作 - 非常感谢! - 作为侧边栏:您对在哪里学习编写 htaccsess 有什么建议,该特定技能是否适合 DEV OPS 的角色?我正在尝试量化技能 - 再次非常感谢您的帮助
    • 不客气。 “学习编写 htaccsess” - htaccess,你指的是 mod_rewrite 吗?我的 goto 资源是 Apache docs (for mod_rewrite) - 虽然这可能不是每个人的首选,.htaccess 不仅仅是 mod_rewrite。 Apache 配置涵盖了一系列学科,但我想说.htaccess 完全属于开发人员/程序员的领域。它是用户态代码库的一部分,可以与应用程序一起分发。我是一名网络开发人员,我使用 .htaccess 作为应用程序开发(和 SEO)的一部分。
    • 我看到其他人引用了 Rich Bowen 的“Apache mod_rewrite”——尽管我自己没有读过。据我所知,它是在 2006 年发布的(这似乎早于 Apache 2.2)并且从那以后就没有更新过? (从那以后情况发生了一些变化。)
    • 好的 太棒了,它给了我一些开始研究的指导,所以谢谢你:不要让这个拖下去,只要你的回答非常有帮助,但是当你提到调整时,我可以问一下您的 SEO htaccsess 是通过使用 htaccsess 来缓存您的网站内容吗?我一直在研究如何做到这一点,但正在画一些空白和指针(或者只是,可以用 htacsess 做什么会很棒)-
    • “SEO 相关”可能更准确。是的,这可能包括浏览器缓存。除了 URL 重写(漂亮的 URL)、规范重定向(和/或设置 rel=canonical 标头)、内容迁移重写/重定向、设置其他 HTTP 响应标头,如 X-Robots-Tag(与索引相关)。显然,您可以在您的应用程序中执行其中的一些操作——而且这样做可能更可取。使用 mod_expires(ExpiresByType 等)更容易管理浏览器缓存 - 这会根据响应的 mime 类型为您设置适当的 HTTP 响应标头。
    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2019-02-21
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多