【问题标题】:Redirect Subdomain to Domain using JavaScript使用 JavaScript 将子域重定向到域
【发布时间】:2017-01-04 02:12:01
【问题描述】:

我正在使用 Apache envvars 创建 MYDOMAIN 和 MYSUBDOMAIN 变量,我在其中定义了“mydomain.com”和“sub.mydomain.com”。然后我在 apache sites-available conf 文件中使用这些变量来部署网站。 'sub' 子域位于 /var/www/html/sub/ 中。我需要在子域网站上有一个 JavaScript 函数,检查 /var/www/html 中是否存在特定文件,如果存在,则重定向到该位置(即 mydomain.com)。我无法对任何特定的 URL 进行硬编码 - 这些将严格使用 apache envvars 处理,因此我需要一个无论域/子域是什么都可以工作的解决方案。

为此,我正在使用这样的 AJAX,如果 file.txt 返回成功,则重定向到 /index.php:-

$(document).ready(function() {

            $.ajax({
                type: 'HEAD',
                url: '/file.txt',
                success: function() {
                            setInterval(function () {
                                    location.replace("/index.php");
                            }, 5000);
                },
                error: function() {
                            console.log('404 Not Found');
                }
            });
});

不幸的是,子域的文档根目录是 /var/www/html/sub 因此 /file.txt 和 /index.php 正在 /var/www/html/sub/ 中有效地查找 - 我需要这个来查找对于 /var/www/html/ 中的 file.txt,然后重定向到 /var/www/html/index.php。

我也尝试使用“../file.txt”和“../index.php”,但这会返回相同的结果(即记录了“404 错误”,因为它正在寻找本质上是 /var/www 的内容/html/sub/file.txt)。由于我无法从 JS 访问 apache envvars(我认为 - 如果可以的话,这将是一个重大的安全恐慌!) - 我还有其他选择吗?

谢谢!

【问题讨论】:

  • 不明白为什么你不做所有这些服务器端并重定向到那里
  • 因为 file.txt 在服务器上发生特定事件之前可能存在也可能不存在,这允许用户在整个网站可用之前使用子域迷你站点。

标签: javascript php


【解决方案1】:

var hostFileUrl = function(fileName){
  return window.location.protocol + "://" + window.location.hostname + "/" + fileName;
};

$(document).ready(function() {
  $.ajax({
    type: 'HEAD',
    url: hostFileUrl('file.txt'),
    success: function(){
      setInterval(function(){
        window.location.assign(hostFileUrl("index.php"));
      }, 5000);
    },
    error: function(){
      console.log('404 Not Found');
    }
  });
});

【讨论】:

  • 不要将链接发布为答案,而是添加一些文本来解释此答案如何帮助 OP 解决当前问题。谢谢
  • 函数 hostFileUrl 应该有助于解决相对路径的问题
  • 这有可能,但是不幸的是 window.location.hostname 返回 sub.domain.com - 而不是 domain.com 因为 JS 加载到 sub.domain.com 以检测文件是否存在于domain.com
猜你喜欢
  • 2021-10-21
  • 2014-08-19
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
相关资源
最近更新 更多