Nano Hash - криптовалюты, майнинг, программирование

URL Rewriter и динамическая структура страницы

Я работаю над системой, которая позволяет пользователям создавать и генерировать свои собственные страницы на лету.

Я подключаю это с помощью URL Rewriter, чтобы я мог получить доступ к страницам через одну страницу, которой будет передано имя/идентификатор страницы через строку запроса. Это простая часть, поскольку я знаю, что могу использовать:

<rewrite url="/(.+)/" to="/GenericPage.aspx?PageName=$1" />

Теперь самое интересное. Пользователи также могут создавать папки с подстраницами и/или подпапками. Эти папки могут быть n глубокими, и их глубина не ограничена. Я в основном реализовал это, потому что структура будет генерировать верхнюю навигацию с этими папками, являющимися опциями меню верхнего уровня, подпапками и так далее.

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

**What I'm trying to avoid**
<rewrite url="/(.+)/(.+)/" to="/GenericPage.aspx?PageName=$2" />
<rewrite url="/(.+)/(.+)/(.+)/" to="/GenericPage.aspx?PageName=$3" />
<rewrite url="/(.+)/(.+)/(.+)/(.+)/" to="/GenericPage.aspx?PageName=$4" />
<rewrite url="/(.+)/(.+)/(.+)/(.+)/(.+)/" to="/GenericPage.aspx?PageName=$5" />
<!-- Where the additional (.+) are representative of folders -->

Я, кажется, поставил себя в тупик с этим (может быть, я немного устал сегодня).

Было бы идеально, если бы в URL Rewriter было правило take after 2nd last /.


Ответы:


1

У меня нет установки URL Rewriter для тестирования, но, вероятно, может помочь следующее регулярное выражение:

.*/([^/]+?)/
30.05.2012

2

Я не использую aspx, но, если вы можете, вам лучше использовать что-то вроде

<rewrite url=".?" to="/RoutingHandler.aspx" />

Это обходит перезапись URL-адреса регулярным выражением (и, следовательно, все потенциальные проблемы экранирования параметров), так что в RoutingHandler.aspx вы получаете доступ к URL-адресу исходного запроса через переменные сервера. При этом вы можете разделить виртуальные каталоги на косую черту в массив. Вы можете сопоставить массив с параметрами, страницами в базе данных или чем угодно.

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

30.05.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..