Удаление # в угловых URL

0

У меня есть сайт AngularJS (1.4.5), который размещен на сервере apache2 с небольшим экземпляром NodeJS, который обслуживает связь с бэкэнд, а также размещает веб-сайт, я использую apache2 sites-available.conf для перенаправления порта

URL-адрес выглядит следующим образом:

http://prod.mywebsiteurl.com/myapp/#/mp

Последний путь является динамическим, когда приложение Angular запущено, он принимает последний параметр с: (я настроил это с помощью $ routeProvider

dynamicUrl = $routeParams.dynamicUrl;

в функции init().

Когда я html5mode с:

$locationProvider.html5Mode(true);

Я не могу получить доступ к веб-сайту:

http://prod.mywebsiteurl.com/myapp/mp

Он дает ошибку apache2.

Cannot GET /MP (404)

Однако, если я набираю старый адрес, с # он перенаправляет на сайт без #.

Любая идея, как это решить? Это конфигурация apache2? Если так? Как мне это сделать? Я настоящий apache2 noob.

Я думаю, что должен иметь файл.htaccess и использовать это небольшое правило перезаписи.

RewriteEngine On  
  # If an existing asset or directory is requested go to it as it is
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
  RewriteRule ^ - [L]

  # If the requested resource doesn't exist, use index.html
  RewriteRule ^ /index.html

Я нашел его на этой странице: https://ngmilk.rocks/2015/03/09/angularjs-html5-mode-or-pretty-urls-on-apache-using-htaccess/

Но я использую узел как веб-сервер, поэтому я действительно не знаю, где разместить файл, а сервер - сервер Ubuntu. Я поместил его в корневой узел NodeJS, но, похоже, он не работал очень хорошо.

Любая помощь оценивается.

Теги:
.htaccess
apache2

1 ответ

0

Я думаю, для вашего углового приложения у вас есть только одна точка входа (index.html), а затем внутренняя маршрутизация сделает все для вас. То, что вам нужно сделать в узле, - это каждый вызов, который вы возвращаете index.html.

К сожалению, су не указал, что вы использовали в узле, если это фреймворк или нет. Предполагая, что у вас есть экспресс-экземпляр, вы можете сделать следующее:

var express = require('express');

var server = express();
server.use('/public', express.static(__dirname + '/public'));

server.get('/*', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

var port = 8000;
server.listen(port, function() {
    console.log('server listening on port ' + port);
});

server.get('/*' это будет принимать любой вызов в основном и всегда будет возвращать index.html, поэтому ваше угловое приложение может начать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню