Как history.pushstate может разрешить единую точку входа для вложенных URL-адресов

Извините за плохо сформулированный вопрос.

PHP с apache использует index.php/index.html для URL-адресов каталогов, таких как: localhost = localhost/index.php или localhost/place = localhost/place/index.php

Если я начну с: localhost/place и использую javascript history.pushstate для обновления URL-адреса с длинным адресом, например: localhost/place/subplace, то, если я введу этот URL-адрес в браузере, я перейду на localhost/place/subplace /index.php, когда я действительно хотел, чтобы localhost/place/index.php позволял этому URL-адресу быть единственной точкой входа.

Я использую простой javascript (window.location.pathname или anchorNode.pathname), чтобы получить URL-адрес для использования с ajax. Это используется простым маршрутизатором, подобным backbone.js, для обновления страницы. Маршрутизация javascript работает и работает назад/вперед в браузере. Если бы я только мог заставить его работать с единой точкой входа для URL-адресов, введенных в адресную строку.

Подводить итоги:

Мне нужна единая точка входа для моего php-приложения, чтобы получать все подкаталоги.

В единственной точке входа я хочу запустить javascript, чтобы получить путь и использовать его для маршрутизации страницы с помощью ajax.

Я использую history.pushState для обновления URL-адреса, но это мешает единой точке входа для приложения, когда каталоги длиннее основного каталога. В основном я получаю страницу 404.

Прямо сейчас я не слишком беспокоюсь о том, чтобы сделать его обратно совместимым с браузерами, у которых нет history.pushState. Я просто хочу, чтобы это работало.

В качестве дополнения я бы предпочел работать с обычными путями в javascript, а не со строкой запроса. Я бы предпочел, чтобы страница загружалась с адресной строкой или использовалась history.pushState. Я не знаю, можно ли это решить с помощью перезаписи apache или что-то в этом роде.

Похожие вопросы:

Как справиться с обновлением страницы с помощью JS History API pushState


person Quentin Engles    schedule 12.10.2013    source источник


Ответы (1)


В порядке. Я слишком все усложняю.

Чтобы маршрутизация работала при загрузке страницы, мне нужно сделать две вещи.

В файле .htaccess я могу использовать перезапись apache, чтобы все URL-адреса направлялись к index.php?path=first/second/thert.

Когда страница загружается, просто соедините новый путь в строке запроса со строкой javascript, которая обрабатывает маршрут.

JavaScript все еще используется, и функциональность не дублируется. Все хорошо.

Это также отвечает на это: Как справиться с обновлением страницы с pushState API истории JS

person Quentin Engles    schedule 16.10.2013