Перезапись URL / Перенаправление с Querystring?
У нас есть ситуация, когда у меня есть куча URL-адресов с параметрами запроса, которые используются для основного перенаправления на различные сайты, вроде короткого URL или индекса.
Например: www.mysite.com/abc?x=123, который перенаправляет на www.google.com www.mysite.com/abc?x=456, который перенаправляет на www.yahoo.com и так далее...
Проблема заключается в том, что ни сейчас, ни ранее не было действительной страницы "abc", эти ссылки были созданы и опубликованы неизвестно сайту. В настоящее время проблема заключается в поиске простых средств, чтобы сделать их активными, поэтому при щелчке происходит правильное перенаправление.
В настоящее время это на сервере IIS Windows. Сам основной сайт основан на.NET.
Есть ли способ использовать файл htaccess или аналогичный (предполагая, что мы используем плагин mod-rewrite isapi для IIS), чтобы разрешить создание этих перенаправлений? У нас есть сотни таких для создания.
Единственный другой вариант, который я могу себе представить, - это перенаправить их, в свою очередь, на реальную страницу asp.net, которая затем обработает логику param и перенаправления в коде, предполагая, что мы можем легко перенаправить основной URL-адрес на реальную страницу.
Реальная проблема, которую я предполагаю, заключается в том, чтобы обойти "abc? X =456", когда не существует реальной страницы и в любом случае не дано никакого расширения для размещения страницы на месте.
2 ответа
Вы можете использовать HTTPRedirection. Он будет делать именно то, что вы описываете: создайте фильтр для каждого каталога "abc", написав регулярное выражение для совпадения с входящим URL-адресом и выведя его на страницу URL, которую вы контролируете. Это произойдет до того, как приложение станет частью вашего стека, даже будучи осведомленным об этом, и должно работать без сбоев.
Если abc
не существует, ваш сервер ответит 404. В ASP.NET у вас есть выбор, как реагировать на это - он находится в файле web.config как CustomErrors. Включите это, затем перенаправьте на модную страницу 404 (возможно, вы уже делаете). Таким образом, на интересной странице 404 можно было бы проверить запрошенную строку запроса (которая передается на пользовательскую страницу ошибки как еще одну строку запроса), чтобы выяснить, является ли она допустимым перенаправлением, существует ли оно в вашей базе данных и т. Д. Просто выполните Response.Redirect() оттуда.
Это позволяет вам поддерживать некоторую логику, хранить эти отношения в базе данных и не записывать их все в конфигурацию фильтра.