我使用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查看時被忽略。
在此先感謝您的幫助或資源!