域转发时URL中的垃圾字符

时间:2017-09-04 13:28:31

标签: html subdomain shared-hosting

我最近遇到此问题,我已将我的域转发到我的GoDaddy共享托管上托管的其中一个文件。但是,每当我在浏览器中点击域名时,它都会导致相应的文件(.html)以及前面的垃圾字符。

示例:

www.domainname.info

导致:

https://www.mydomainname.in/coffee.html/NjSmZ/KiKgZ/

结果:

  

找不到错误404页面。

Haven没有改变任何代码;这是一种突然的行为。

更新(更多信息):

NjSmZ/KiKgZ/是链接中的垃圾字符。转发是通过GoDaddy域转发器本身进行的。没有外部编码进行转发。

www.Aitb.in是转发到advity.in/adarsha.html的域名。

4 个答案:

答案 0 :(得分:2)

虽然我不知道GoDaddy如何在内部进行域转发,但它似乎不是一个简单的DNS CNAME,因为当前域的查找没有显示。

在玩游戏时,看着转发域的响应,我看到它提供了301(永久移动)的http响应。响应将所选域替换为新域,并保持URL的路径部分不变。

考虑domain.a是转发域而domain.b是新域,这意味着:

http://domain.a/ => http://domain.b/
http://domain.a/contact.html => http://domain.b/contact.html
http://domain.a/a/long/path/ => http://domain.b/a/long/path/

但在您的情况下,您转发的不仅仅是域名... domain.b更像domain.b / coffee.html,遵循相同的规则,这意味着:

http://domain.a/ => http://domain.b/coffee.html
http://domain.a/contact.html => http://domain.b/coffee.html/contact.html
http://domain.a/a/long/path/ => http://domain.b/coffee.html/a/long/path/

所以,我的建议是,使用更好的登陆来url_rewrite重定向路径到正确的路径。或者,如果你不能,你可以尝试添加一个?或#在URL的末尾。这是纯粹的推测,但如果重写没有其他隐藏规则,这将提供类似下面的内容,这将产生适当的请求并“隐藏”垃圾部分。

http://domain.a/ => http://domain.b/coffee.html?
http://domain.a/contact.html => http://domain.b/coffee.html?/contact.html
http://domain.a/a/long/path/ => http://domain.b/coffee.html?/a/long/path/

答案 1 :(得分:0)

“垃圾字符”肯定来自GoDaddy,而不是来自原始请求。域转发正是GoDaddy所称的服务,它使用301或302重定向(或称为“屏蔽”的iframe)重定向Web请求。问题是 - 无论出于何种原因,服务于重定向的GoDaddy Web服务器通常在域之后附加一些“随机”字符(作为子文件夹)。根据我的经验,子文件夹始终直接出现在域之后,并且在可能属于原始请求的任何路径之前。因此,正如萨尔克特所说,这只是一个黑客攻击。但GoDaddy方面仍然存在问题'

此外,如果您确实使用了黑客并在网站上使用Google Analytics,则可能需要添加类似?x =而不仅仅是?的内容。然后,您可以在Google Analytics中排除x参数,并且最终不会为您的主页添加一百个不同的网址。

答案 2 :(得分:0)

我在GoDaddy控制的多个不同域上发生了此问题。我几次尝试联系GoDaddy支持人员来解决此问题,但没有成功。最终我决定自己解决问题,因为GoDaddy似乎对他们的问题一无所知。

这是我的解决方案: 将此PHP代码添加到404错误页面的顶部。对于WordPress,请将其添加为主题的404.php文件:

<?php 
/* GoDaddy 404 Redirects FIX - by Daniel Chase - https://riseofweb.com */
$currURL = $_SERVER['REQUEST_URI'];
$CheckRedirectError1 = substr($currURL, -6);
$CheckRedirectError2 = substr($currURL, 0, 7);
$CheckRedirectError = false;
if (preg_match("/^[a-zA-Z]{5}\/$/",$CheckRedirectError1)){
    $CheckRedirectError = $CheckRedirectError1;
}else if (preg_match("/^\/[a-zA-Z]{5}\/$/",$CheckRedirectError2)){
    $CheckRedirectError = substr($CheckRedirectError2, 1);
}
if($CheckRedirectError){
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $redirectTo = str_replace($CheckRedirectError, '', $currURL);
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: " . $protocol . $_SERVER['HTTP_HOST'] . $redirectTo);
    exit();
}
?>

该脚本检查随机字符并将其删除,然后重定向到正确的页面。您可能需要添加一些例外或修改脚本以适合您的需求。

答案 3 :(得分:0)

谢谢

我最终通过添加“?”解决了这个问题。在域转发链接的末尾

示例:mydomain.com/main/foo.html? 要么 例如:mydomain.com/main/foo.html#