Назад | Перейти на главную страницу

Apache: обслуживать все URL-адреса в домене со страницей индекса без изменения пути?

Я пишу приложение Backbone.js, которое использует API истории HTML5. Я бы хотел, чтобы пользователи могли создавать URL-адреса в форме:

domain.com/any
domain.com/random
domain.com/paththattheuserlikes

и перенаправить все эти URL на мой index.html страница, на которой магистральный маршрутизатор выберет путь и обработает запрос соответствующим образом.

У меня такой вопрос: как настроить Apache для маршрутизации всех запросов в этот домен на index.html, сохраняя при этом путь на месте, чтобы магистральный маршрутизатор правильно обработал запрос?

Я знаю, как выполнить простое перенаправление Apache, но боюсь, что путь будет удален.

В вашем конфигурационном файле Apache поместите следующие строки:

RewriteEngine On
RewriteRule ^/[a-zA-Z0-9]+[/]?$ /index.html [QSA,L]

Это перезапишет все запросы, состоящие из буквенно-цифровых символов, в index.html, сохраняя при этом строку запроса. и по-прежнему отображается как введенный по тому же пути. Таким образом, если пользователь перешел на yourdoma.in/someoldpath, index.html будет отображаться, но в адресной строке все равно будет указано yourdoma.in/someoldpath.

Как упоминалось на первом плакате, если вы хотите узнать, какой путь был введен, вы можете изменить вторую строку выше на это:

RewriteRule ^/([a-zA-Z0-9]+)[/]?$ /index.html?pathtyped=$1 [QSA,L]

Которая будет передавать исходный путь, введенный в index.html в переменной запроса "pathtyped".

Если вы не хотите терять исходные пути, вам необходимо включить их (или подстановку) в строку запроса целевой страницы, чтобы иметь возможность получать и обрабатывать их.