2017-08-16 96 views
0

我使用MacBook Pro和Raspberry Pi作爲Web服務器都測試了以下問題,兩者都導致相同問題。我建立了一個網站,目前正在轉發它,當我通過輸入服務器的私有IP地址(無論服務器是我的MacBook Pro還是Raspberry Pi)來訪問它時,一切正常,但是當我通過端口轉發公共IP,有兩個問題發生時,通過私有IP地址查看網站時不會發生:通過私有IP訪問我的網站與端口轉發的公共IP之間的奇怪區別

問題1)假設我的網站是「mysite.com」。如果我在URL地址欄中輸入「mysite.com/about」,則會轉到該「about」頁面,並且URL正確地顯示「mysite.com/about」。但是,如果我在「mysite.com」的主頁上,並單擊「約」選項卡以上的導航欄,而不是將請求輸入到URL地址欄中,它將轉到正確的頁面,但當它應該說「mysite.com/about」時,仍將主頁「mysite.com」顯示爲URL。我使用的是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上,當通過專用IP訪問它時,window.innerWidth返回320的大小,但在通過公共IP訪問相同頁面時返回980的大小,我將其轉發給端口。但是,window.screen.width保持不變。因此,端口轉發站點的佈局是不同的並且被破壞。就好像<meta name="viewport" content="width=device-width, initial-scale=1.0">在通過公共IP查看時被忽略。

在此先感謝您的幫助或資源!

回答

0

的問題是不是在代碼中,但事實上,我在做一個幀重定向從我的DDNS我的域名有1 & 1.查看我的網站無論是在我的網址公共IP或DDNS酒吧導致了正確的佈局,但在我的網址欄中查看我的域名導致了一個混亂的佈局。在意識到<meta name="viewport" content="width=device-width, initial-scale=1.0">應該將iPhone window.innerWidth保持爲320以防止它從980,我意識到meta標籤必須以某種方式被覆蓋。我查看了我的域名和我的ddns的源代碼,果然,我的域名頁面中的元標記完全不符合我寫的內容......框架重定向將我的代碼封裝在我的域的元標記中1 & 1導致了我得到的兩個問題:1)我整個網站的導航全部斷開,2)視口代碼不再位於我的元標記中。因此,我將這個問題保留給任何曾經遇到同樣問題的人。有人在那裏運行家庭服務器,並試圖將他們的ddns連接到他們的域名,幀重定向不是這樣做的方式。目前,我必須直接將我的公共IP與我的域連接,直到我弄清楚如何使用我的ddns作爲名稱服務器。目前正在研究CNAME,這應該是我應該做的。