Обновление страницы дает «Страница не найдена»

У меня есть приложение, где он использует один ng-view и несколько controllerов и представлений. Если я перемещаюсь по корню, например: www.domain.com, все работает. Кроме того, если я нажму Ctrl + R (Refresh), то он даст мне 404 eror Страница не найдена. например: обновление на этой странице дает мне ошибку. http://domain.com/item/1/ .

Но если я получаю доступ к странице с помощью hashbang, то она работает. Ru: http://domain.com/#!/item/1/

Как исправить эту проблему? Моя htacess пуста. И я использую хром, который поддерживает hhml5 hashbang.

Когда браузер вызывает http://example.com/#!/item/1/ , он вызывает страницу индекса http://example.com/ , ваш JS затем определяет, какой контент отображать, анализируя hashтег.

Когда браузер вызывает http://example.com/item/1/ , ваш сервер пытается обслуживать индексную страницу http://example.com/item/1/ , которую он не может найти и, следовательно, выбрасывает ошибку 404 ,

Для достижения желаемого вам потребуется:

  • Создайте правило перезаписи, чтобы переписать ссылки на корневую страницу индекса
  • настройте JS так, чтобы он генерировал hashтегов вместо URL. Если вы используете AngularJS, отключите режим html5 с помощью $locationProvider.html5Mode(false); , или
  • поместите страницу индекса в http://example.com/item/1/ которая перенаправляется на http://example.com/#!/item/1/ – однако обратите внимание, что это нужно будет повторять для каждого / prettyPath / вы крест.

Предполагая, что вы используете Apache, а ваш индексный файл – index.html, попробуйте добавить следующее в ваш файл .htaccess, чтобы создать правило перезаписи, прежде чем пытаться выполнить любое из двух других решений.

  RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) /index.html/#/$1  

Если вы используете чистое решение AngularJS / Ajax без логики на стороне сервера, измените index.php на index.html (или index.htm в зависимости от вашего имени файла корневого индекса).

Вам нужно просто добавить сценарий ниже в вашем .htaccess

 RewriteEngine On Options FollowSymLinks RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /#/$1 [L] 

это версия .NET для перезаписи URL (IIS)

                    

Great Blog Post на этом здесь … http://ericduran.io/2013/05/31/angular-html5Mode-with-yeoman/

«Это связано главным образом с тем, что ваши маршруты AngularJS не являются актуальными html-страницами. Например, если у вас есть маршрут в вашем угловом приложении / create-order. Этот URL-адрес прекрасно работает, если вы ссылаетесь на него из своего приложения, но если пользователь пытается перейти непосредственно на эту страницу, сервер вернет 404. ”

По состоянию на март 2018 года, просто добавьте эти строки ниже в файл .htaccess .

 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #RewriteRule ^(.front-end*)$ /front-end [NC,L,QSA] RewriteRule ^(.*)$ /index.html [NC,L,QSA] 

Надеюсь, это будет полезно для вас.

Я не мог комментировать, но также использовал HTML mode , base href="/" , sudo a2enmod rewrite , используя .htaccess переписать. Мне пришлось AllowOverride All как на сайтах, доступных на вашем сайте, так и в /etc/apache2 apache.conf

   RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !index RewriteCond %{REQUEST_URI} !.*\.(css js|html|png) RewriteRule (.*) index.html [L]  

используйте это как .htaccess

  • В чем смысл запроса: «ngModel»?
  • Как включить просмотр / частичный стиль в AngularJS
  • Недопустимое использование директивы ngTransclude в шаблоне
  • Угловой sanitize / ng-bind-html не работает?
  • Как получить предыдущий элемент в ng-repeat?
  • Как проверить подключение к Интернету в AngularJs
  • Как связать 2 модели с одним полем ввода в Angular?
  • AngularJS - $ anchorScroll smooth / duration
  • Как фильтровать несколько значений (операция OR) в angularJS с помощью флажка
  • Как установить динамический controller для директив?
  • Как подсчитать общее количество часов на странице?
  • Давайте будем гением компьютера.