【问题标题】:Using htaccess, Redirect http or https domain, and any subpage to particular page on another server使用 htaccess,将 http 或 https 域以及任何子页面重定向到另一台服务器上的特定页面
【发布时间】:2021-08-24 23:51:14
【问题描述】:

背景:

  • 我们的 DNS 指向新服务器。
  • Apache 服务器有一个名为 example 的目录
  • 示例目录有一个用于重定向的htaccess文件,代码如下

问题是:我们需要它来重定向 URL 的任何变体,即:http://example.comhttps://example.comhttp://example.com/filename.htmlhttps://example.com/directory/filename.html 等。到另一台服务器上的特定页面。强>

到目前为止,我们有以下代码,它适用于 https,但不适用于 http。

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://differenturl/login/login.html [R=301,L]

我觉得有一个简单的答案,但似乎找不到! **编辑:为了澄清 - 不工作,我的意思是我没有使用 http 重定向到 https://differenturl/ 等。它仅适用于 https。 http 将我路由到这一切所在的服务器的主页。而且该服务器的域名与上述任何服务器不同。

【问题讨论】:

  • 请求 HTTP 时会发生什么? “名为示例的目录”的意义是什么 - 这是文档根目录吗?您发布的规则也不会重定向 www.example.com(即 www 子域) - 这是一个问题吗?实际上,您是否需要检查 Host 标头?您是否在第一台服务器上托管多个域?
  • 感谢您的回复。当我尝试访问 http 版本时,我被路由到服务器主页......所以:-baseserver.com/example 有 htaccess 文件。 -example.com 的 DNS 指向 baseserver.com/example(也使用虚拟主机设置) -使用上述 htaccess,example.com 成功重定向到 differenturl 等...如上 -使用 example.com我在 baseserver.com 的根页面结束。
  • "DNS for example.com 指向 baseserver.com/example" - 请记住,如果在 baseserver.com/ 处有另一个 .htaccess 文件,那么这也会影响 example.com,如果example.com 指向主域的子目录。 (严格来说,example.com 将指向一个文件系统路径——example.com 不知道这是否恰好解析到与baseserver.com/example 相同的位置。)

标签: apache .htaccess redirect mod-rewrite


【解决方案1】:

如果它对 HTTP “不起作用”,那么:

  • 服务器配置中根本没有配置端口 80(即 HTTP)的 <VirtualHost> 容器。

或者,

  • vHost:80 容器指向文件系统的不同区域,因此不会处理 .htaccess 文件。

或者,

  • vHost:80 容器不允许 .htaccess 覆盖,因此 .htaccess 文件被忽略。您需要通过在 vHost:80 容器中的相应 <Directory> 容器中设置 AllowOverride All 来配置 .htaccess 覆盖。或者简单地将所有内容重定向到 vHost:80 容器中的 HTTPS(例如 Redirect / https://example.com/),然后允许 .htaccess 文件从 HTTPS 重定向。 (这可能是 2 次重定向,但这应该不是问题。)

    或者只是在服务器配置中进行重定向(到另一台服务器),根本不使用.htaccess

【讨论】:

  • 谢谢,我要去看看这一切。这部分配置是别人做的,我去查一下!
  • 这似乎是问题所在。 httpd 配置在端口 443 上列出用于重定向...谢谢!
  • @LisaH Aside: 如果 example.com 的唯一目的是重定向到另一个域,那么只使用服务器配置可能更简单(只有一个非常小的 vHost然后需要配置)。然后您就不需要example 子目录或.htaccess 文件(并且baseserver.com 没有潜在的冲突)。唯一可能的警告是重定向是否需要定期更改,但由于这是 301,所以我认为不需要(或由无权访问服务器配置的用户更新)。
  • 再次感谢您的 cmets。 example.com 服务器用于一些不同的事情。但是,根据您上面的评论,我们查看了 VirtualHost 端口 80... 并修复了它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多