【问题标题】:How do I redirect to a different domain AND a different folder?如何重定向到不同的域和不同的文件夹?
【发布时间】:2017-08-20 22:05:20
【问题描述】:

我需要应用什么 htaccess 规则来重定向到不同的域以及不同的文件夹结构?示例:当前页面是

http://oldwebsite.com/school/forum

新网站将是

https://newwebsite.com/forum

我认为仅域名的重写规则就是

RewriteEngine on
RewriteRule ^(.*)$ https://newwebsite.com/$1 [R=301,L]

当我测试它时它工作得很好。 但是我找不到将不必要的子文件夹中的旧论坛帖子重写到直接位于 /forum 中的新域的规则。

另外:我是否需要写 https 或者如果我有 SSL 证书并且设置了论坛(在这种情况下为 phpbb3),这无关紧要并且会自动完成还是要使用 SSL?

感谢和最好的问候, 安迪

【问题讨论】:

    标签: .htaccess ssl redirect


    【解决方案1】:

    我假设这就是你要找的东西:

    RewriteEngine on
    RewriteRule ^/?school/(.*)$ https://newwebsite.com/$1 [R=301]
    

    该规则适用于 http 服务器主机配置,同样适用于动态配置文件 (.htaccess),然后是主机文档根目录。显然必须启用重写模块。如果您决定使用动态配置文件,那么您还需要使用 AllowOverride 指令来允许它。

    您需要指定https 协议,因为这是重定向客户端将建立连接的地方。这是客户端必须在与服务器联系之前决定的事情。因此,是否安装了 ssl 证书并没有真正的帮助。您强大依赖于在新域上从 http 到 http 的额外重定向,但为什么呢?首先直接重定向到 ssl 端口要好得多。

    还有一个一般提示:您应该始终喜欢将此类规则放在 http 服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess 样式文件)。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器的速度。它们仅在您无法控制主机配置(阅读:非常便宜的托管服务提供商)或您有一个依赖于编写自己的重写规则的应用程序(这显然是一个安全噩梦)的情况下作为最后一个选项被支持)。

    【讨论】:

    • 感谢您的回答,该规则似乎有效!我想这两个规则的顺序也很重要,对吧?我在htaccess.madewithlove.be 上对其进行了测试,如果我在你的上面有 RewriteRule ^(.*)$ newwebsite.com/$1 [R=301,L],你的就不行了。不过,您的在上面,而我的在下面似乎适用于所有情况。无论是主站点的普通网址还是子目录中的论坛网址。
    • 当然,规则的顺序很重要。它们只是从上到下的简单过程。应用了第一个匹配项。如果是本地的外部重定向,甚至不会评估更多规则。因此,根据经验,您首先放置特定规则,然后是更一般的规则。像这里讨论的例外规则应该放在首位。首先评估其他规则没有意义,是吗?
    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 2017-07-04
    • 2021-10-21
    • 2012-07-23
    • 2017-03-24
    • 2014-07-09
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多