Перезапись URL / Перенаправления с Querystring? - PullRequest
0 голосов
/ 28 августа 2009

У нас есть ситуация, когда у меня есть несколько 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 ]

0 голосов
/ 28 августа 2009

Если abc не существует, ваш сервер ответит 404. В ASP.NET у вас есть выбор, как реагировать на это - он находится в файле web.config как CustomErrors. Включите это, затем перенаправьте на модную страницу 404 (возможно, вы уже делаете). Таким образом, на необычной странице 404 можно было бы проверить запрошенную строку запроса (которая передается на пользовательскую страницу ошибки как еще одну строку запроса), чтобы определить, является ли она допустимым перенаправлением, существует ли оно в вашей базе данных и т. Д. Просто выполните Response.Redirect ) оттуда.

Это позволяет вам поддерживать некоторую логику, сохранять эти отношения в базе данных, а не записывать их все в конфигурацию фильтра.

0 голосов
/ 28 августа 2009

Вы можете использовать HTTPRedirection . Он будет делать именно то, что вы описываете: создайте фильтр для каждого каталога «abc», написав регулярное выражение для совпадения с входящим URL-адресом и выведя его на страницу URL, которую вы контролируете. Это произойдет до того, как приложение станет частью вашего стека, даже будучи осведомленным об этом, и должно работать без сбоев.

...