AngularJS, Apache, обработка маршрутов

0

Я новичок в AngularJS, и после того, как я играл с $routeProvider меня есть $routeProvider с тем, чтобы спросить...

Я знаю, что AngularJS используется для одностраничных приложений, но как насчет URL-адреса, к которому напрямую обращаются, например:

ДЕЛО 1:

если кто-то получит доступ к example.com тогда он нажмет ссылку, которая отправит его: example.com/article/title/, и это будет нормально, потому что AngularJS предотвратит запрос клиента на сервер, пока не навредит, на данный момент,

СЛУЧАЙ 2:

если я отправлю ссылку на мою статью кому-то, и он попытается получить доступ к example.come/article/title/ well 404.

Мой вопрос о стратегии борьбы с таким поведением, у меня есть некоторые идеи, но я не очень хорошо знаком с AngularJS, как я уже говорил, но:

  1. Я думал о правилах перезаписи с помощью механизма перезаписи Apache, я игнорирую остальную часть url (example.com/path станет example.com), но это влияет на относительные ссылки на моей странице, поэтому я должен переключиться на полные ссылки, для example (example.com/js/main.js).

Идея плохая, я ее знаю, но это позволяет AngularJS позаботиться о URL-адресах в любом случае.

  1. То, что кажется (я думаю, что я думаю), чтобы быть лучшей стратегией, снова использует механизм перезаписи Apache, но на этот раз я переписал example.come/article/title в example.com?title=articleTitle, затем я проверю через свой серверный язык ( php), вытащите и распечатайте статью из базы данных на страницу, прежде чем она даже попадет в руки AngularJS.

Теперь этот подход вроде разрывает концепцию одной страницы (нет?), У меня разные мнения об этом методе.

В общем, я ищу лучший способ обработки запросов URL-адресов, которые находятся за пределами страницы, и запросы, которые AngularJS не может предотвратить.

Редактировать:

Проблема проста, когда пользователь нажимает ссылку изнутри сайта. AngularJS предотвратит действие по умолчанию, которое запрашивает путь от сервера, например example.com/article/title/ будет искать папку title которая находится внутри article или точнее индекс для этой папки.

Теперь, если друг отправить вам ссылку, непосредственно ссылку, которая указывает на конкретную статью, например example.com/articl/title будет запрос на сервер для извлечения индекса для title папки, что внутри article папку под example.com.

Надеюсь, теперь это имеет больше смысла.

  • 0
    Угловые маршруты таковы: localhost: 9000 / # / repair , это означает, что маршрут определяется по идентификатору маршрута после #.
  • 0
    @tomazahlin, Привет, я знаю это, но вы не ожидаете, что я буду использовать правила перезаписи, чтобы добавить # перед между example.com и /article/title/ right, это идея, я думал об этом, но это очень плохо один.
Показать ещё 6 комментариев
Теги:

1 ответ

0
Лучший ответ

Поэтому я нашел решение в виде механизма перезаписи Apache:

RewriteCond %{REQUEST_URI} ^(/article/[a-z-]+/?)$ [NC]
RewriteRule .* http://example.com/#%1 [NE,R,L]

Используя эти правила, я могу вернуть клиент example.com/#/article/title.

Следующий шаг: AngularJS разделит # оставив меня с example.com/article/title.

Никакой полный путь не нужен, я могу остаться с моими относительными путями.

Ещё вопросы

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