通过私有IP访问我的网站与端口转发公共IP之间存在明显差异

时间:2017-08-16 23:45:28

标签: angularjs server portforwarding

我使用MacBook Pro和Raspberry Pi作为网络服务器测试了以下问题,都导致了同样的问题。我建立了一个网站,目前正在进行端口转发,每当我通过输入服务器的私有IP地址(无论服务器是我的MacBook Pro还是Raspberry Pi)来访问它时,一切正常,但是当我通过网站访问我的网站时端口转发公共IP,有两个问题发生时,通过私人IP地址查看网站时没有发生:

问题1)假设我的网站是“mysite.com”。如果我在URL地址栏中键入“mysite.com/about”,则会转到“about”页面,并且URL正确显示“mysite.com/about”。但是,如果我在“mysite.com”的主页上,并点击我所做的导航栏上的“关于”标签而不是输入请求URL地址栏,它转到正确的页面,但仍然显示主页“mysite.com”作为URL,它应该说" mysite.com/about"。我正在使用AngularJS,但我已将我的网站构建为多页面应用程序,是的,我在链接中使用了target =“_ self”作为导航栏中的选项卡,其中遗漏会导致导航栏损坏。

与我的导航栏相关的代码部分:

app.config(['$locationProvider', '$httpProvider', function($locationProvider, $httpProvider) {
    $locationProvider.html5Mode({
      enabled: true,
      requireBase: true
    });
}]);

<li ng-class="{active: isActive('/')}"><a href="/" target="_self">Home</a></li>
<li ng-class="{active: isActive('/about')}"><a href="/about" target="_self">About</a></li>
<li ng-class="{active: isActive('/news')}"><a href="/news" target="_self">News</a></li>

app.controller('NavController', ['$scope', '$location', function($scope, $location){
   $scope.isActive = function(destination){
      return destination === $location.path(); 
   }
}])

在我的html头中我有:

<base href="/">

在我的.htaccess中我有:

RewriteEngine on
RewriteRule ^about$ index.php [L]
RewriteRule ^news$ index.php [L]
ErrorDocument 404 /index.php

问题2) window.innerHeight和window.innerWidth现在比在我的wifi私有ip中访问它时返回更大的数字。因此,例如在我的iphone上,window.innerWidth在通过专用IP访问时返回大小320,但是当通过我将其转发到的公共IP访问同一页面时,返回大小为980。然而,window.screen.width保持不变。结果,端口转发站点的布局是不同的和破坏的。当通过公共IP查看时,<meta name="viewport" content="width=device-width, initial-scale=1.0">被忽略了。

提前感谢任何帮助或资源!

1 个答案:

答案 0 :(得分:0)

问题不在代码中,而是因为我正在使用1&amp; 1从我的ddns到我的域名进行帧重定向。使用我的网址栏中的公共IP或ddns查看我的网站会产生正确的布局,但在URL栏中使用我的1&amp; 1域名查看它会导致混乱的布局。在意识到<meta name="viewport" content="width=device-width, initial-scale=1.0">应该将iPhone window.innerWidth保持为320以防止它从980开始之后,我意识到元标记必须以某种方式被覆盖。我查看了我的域名来源,与我的ddns相比,确实我的域名页面中的元标记完全不是我写的...框架重定向将我的代码包装在我的域名的元标记中1&amp; 1导致我遇到的两个问题:1)整个网站的导航都被破坏,2)视口代码不再在我的元标记中。因此,对于任何遇到与我一样的问题的人,我都会提出这个问题。有人在那里运行家庭服务器,并试图将他们的ddns连接到他们的域,帧重定向不是这样做的方式。目前,我必须直接将我的公共IP与我的域连接,直到我弄清楚如何使用我的ddns作为名称服务器。目前正在研究CNAME,据说这就是我应该做的事情。