使用JavaScript将子域重定向到域

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

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

  $(document).ready(function(){\  n 
$ .ajax({
type:'HEAD',
url:'/ file.txt',
成功:function(){
setInterval(function(){
location.replace(“ /index.php");
},5000);
},
错误:function(){
console.log('404 Not Found');
}
});
} );
</ code> </ pre>

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


nn

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

谢谢!</ p>

</ div>

展开原文

原文

I am using Apache envvars for creating the MYDOMAIN and MYSUBDOMAIN variables where I define 'mydomain.com' and 'sub.mydomain.com'. I then use these variables in the apache sites-available conf files to deploy the website. The 'sub' subdomain resides in /var/www/html/sub/. I need to have a JavaScript function on the subdomain website check whether or not a particular file exists in /var/www/html and if so, redirect to that location (i.e. mydomain.com). I cannot hard-code any specific URL's - these will be dealt with strictly using apache envvars, so I need a solution that will work regardless what the domain/subdomain is.

For this purpose, I am using AJAX like this, if file.txt returns a success, redirect to the /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');
                }
            });
});

Unfortunately the document root for the subdomain is /var/www/html/sub therefore /file.txt and /index.php are effectively being looked for in /var/www/html/sub/ - I need this to look for file.txt in /var/www/html/ and then redirect to /var/www/html/index.php.

I also tried using '../file.txt' and '../index.php' but this returns the same result (i.e. '404 Error' is logged because it is looking for what is essentially /var/www/html/sub/file.txt). Since I cannot access the apache envvars from JS (I think - would be a major security scare if I could!!) - what other options have I got?

Thanks!

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

1个回答



</ p>





  var hostFileUrl = function(fileName){ 
返回window.location.protocol +“://”+ window.location.hostname +“/”+ fileName;

};

$(document).ready(function(){
$ .ajax({
type:'HEAD',
url:hostFileUrl('file.txt'), \ n success:function(){
setInterval(function(){
window.location.assign(hostFileUrl(“index.php”));

},5000);

},
错误:function(){

console.log('404 Not Found');

}

});

}}; </ code> </ pre>

</ div>

</ div>

</ div>

展开原文

原文

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');
    }
  });
});

</div>

douba8758
douba8758 这有可能,但是,不幸的是,window.location.hostname返回sub.domain.com - 而不是domain.com,因为在sub.domain.com上加载了JS以检测该文件是否存在于domain.com
3 年多之前 回复
dongzhi1949
dongzhi1949 函数hostFileUrl应该有助于解决相对路径的问题
3 年多之前 回复
doucheng7808
doucheng7808 而不是发布链接作为答案添加一些文本来解释这个答案如何帮助OP解决当前问题。谢谢
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐