Делаю сайт, где страницы обновляются без перезагрузки.
Все ссылки приведены к формату domain.ru/folder1/folder2/.../folderN/
Такой формат адреса позволяет использовать "бесконечную" вложенность папок. Но есть проблема, при нажатии F5, происходит переход на соответствующую страницу сайта, которой нет, т.к. вся работа ведется в index.php.
Делал перенаправление (в .htaccess) всех запросов на index.php, но результата это не дало (скорее всего не корректно сделал).
Q1: Как сделать, чтобы при нажатии на F5 происходило перенаправление на index, а в нем я уже смог разобрать url?
Рассматриваю еще вариант передачи папок через переменные: index.php?folder=1&folder=20&folder=33&...&folder=N
Но тут проблема будет в том, что все переменные folder, в итоге, будут равны N. Количество вложенных папок, в теории, бесконечно.
Q2: Если рассматривать этот вариант, то как сделать, чтобы через переменные можно было передать такую вложенность?
Пока, единственным пришедшим в голову решением, является использование cookies. Но хотелось бы сделать через адрес, чтобы было визуальное представление и можно было двигаться по истории браузера.
Нужно сделать 2 вещи: 1 - переадресацию в index.html на сервере
2. инициализацию вашего роутера при первоначальной загрузке страницы и подгрузку нужного темплейта в соответствии с URL.
первый пункт - ищите HTML5 url %имя веб сервера используемого%, второй - при инициализации вашего приложения нужно взять текущее значение window.location и из него задать начальный state. То есть выполнить все те действия, которые вы выполняете при смене страницы.
Так и делаю и все ок, кроме одного - находясь на странице вида "domian.ru/documents/" и нажав F5, происходит попытка входа в файл index.php в папке /documents. Пытался настроить в .htaccess перенаправление всех запросов на корневой index, но не получилось.
RewriteEngine On
RewriteCond %{REQUEST_URI} !3rdParty [NC]
RewriteCond %{REQUEST_FILENAME} !\.(js|css|png|jpg|gif|ico)$ [NC]
RewriteRule ^(.*)$ index.php?$1 [L]
-----------------------------------------------------------
%domain%/ - работает
%domain%/documents - работает
%domain%/documents/ - не работает и далее, при добавлении папок, тоже не работает.