我最近遇到此问题,我已将我的域转发到我的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
的域名。
答案 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#