Правильная работа AJAX сайта с существующими ссылками на статические страницы, как?

Добрый день,
есть сайт на ajax ссылках (сразу оговорюсь верстать сайт на AJAX ссылках - не моя идея, а одно из основных требований заказчика).
JS написан так, что при вводе в адресную строку mysite.ru/#/About/ скрипт подхватывает все что идет после # и выдает нужную страницу. Реализовано так:
1) Пользователь вбил запрос mysite.ru/#/About/
2) Вне зависимости от адреса сервер отдает главную страницу с хедером и футером, но без самого содержимого страницы.
3) JS cкрипт с главной страницы проверяет текущий адрес в адресной строке. Если там есть #, то отправляет на сервер POST запрос c ID страницы следующим после # (ID=About). Сервер делает запрос в БД на содержимое страницы с ID=About отдает её ответом на POST запрос. Содержимое вставляется скриптом между хедером и футером.
Это все уже реализовано и работает нормально.
Как я понимаю, если например блоггер захочет поделится ссылкой на наш сайт, то все будет открываться нормально.

Вопрос в следующем:
У старой версии сайта было около 20 страниц проиндесированных Гугл и Яндекс. Адреса проиндексированных страниц не содержат # (естественно). То есть текущие ссылки в гугле выглядят так: mysite.com/About/

Текущее состояние htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

То есть всегда отдается index.php с кодом 404, что конечно тоже скорее всего нужно переделать.

Как переделать htaccess и скрипт, чтобы не потерять позиции. Нужен самый простой и быстрый вариант (потом я уже добавлю !# механизм для индексации подгружаемых ajax страниц, но сейчас клиенту нужно срочно). Напоминаю, всего проиндексированных страниц около 20шт (то есть по пальцам сосчитать). Я начинающий фротенд-разработчик, специфика совсем не моя, просьба помочь.

Заранее спасибо!
  • Вопрос задан
  • 352 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Kano
Как подсказывает мне гугл в самом простом случае вам надо перенаправить все запросы до не существующих ресурсов на главную страницу.
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !/api

# otherwise forward it to index.html 
RewriteRule ^.*$ - [NC,L]
RewriteRule ^app/. /app/index.html [NC,L]

Тут ваша главная страница находится в папке app/index.html
На странице при помощи js забирайте путь window.location.pathname выдирайте из него что вам надо и действуйте так будто значение вы получили после "#".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы