Я проверил следующие проблемы, используя MacBook Pro, а затем Raspberry Pi в качестве веб-серверов, оба привели к одной и той же проблеме. Я создал веб-сайт и в настоящее время перенаправляю его, и всякий раз, когда я получаю доступ к нему, вводя частный IP-адрес сервера (независимо от того, был ли сервер моим MacBook Pro или Raspberry Pi), все работает нормально, но когда я получаю доступ к своему сайту через port forwarded public IP, возникают две проблемы, которые не возникали при просмотре сайта через приватный ip адрес:
Проблема 1) Допустим, мой веб-сайт называется «mysite.com». Если я наберу «mysite.com/about» в строке URL-адреса, он перейдет на эту страницу «о нас», и 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 возвращают гораздо большие числа, чем при доступе к ним с моего частного IP-адреса Wi-Fi. Так, например, на моем iphone window.innerWidth возвращает размер 320 при доступе к нему через частный IP-адрес, но возвращает размер 980 при доступе к той же странице через общедоступный IP-адрес, на который я перенаправляю порт. Тем не менее, window.screen.width остается неизменным. В результате макет сайта с перенаправлением портов отличается и не работает. Как будто <meta name="viewport" content="width=device-width, initial-scale=1.0">
игнорируется при просмотре через общедоступный IP-адрес.
Заранее спасибо за любую помощь или ресурсы!