Как получить «первоначально запрошенный» URL при использовании механизма перезаписи URL IIRF - PullRequest
3 голосов
/ 09 октября 2010

Я использую Iconic IIRF механизм перезаписи URL на IIS, и "причудливые" URL выглядят примерно так:

http://some-website.com/some-function/418/some-keyword-rich-filename.html

Этот пример URL соответствует:

http://some-website.com/some-function.asp?SOME-ID=418

Теперь внутри файла some-function.asp мне нужно знать страницу, запрошенную браузером. Я просмотрел все переменные IIS, но не смог найти значение /some-function/418/some-keyword-rich-filename.html внутри любой из них.

В качестве примечания мне нужна эта информация для отправки 301-го перенаправления в браузеры. Например. если браузер запрашивает:

http://some-website.com/some-function/418/index.html

Сначала мне нужно отправить браузер по адресу:

http://some-website.com/some-function/418/some-keyword-rich-filename.html

И вот почему мне нужен исходный URL для сравнения.

1 Ответ

6 голосов
/ 25 марта 2011

Для IIRF это называется unmangling и может быть достигнуто с помощью модификатора U.

Из руководства IIRF :

U = Сохранить исходный URL-адрес в серверной переменной HTTP_X_REWRITE_URL

Просто добавьте модификатор U в RewriteRule, для которого вы хотите сохранить исходный URL-адрес.Например:

RewriteRule ^/some-function/(\d+)/(.*)$ /some-function.asp?SOME-ID=$1 [I,U,L] 

Затем в коде вашей страницы some-function.asp вы можете получить доступ к исходному URL-адресу, например так (классический ASP):

Request.ServerVariables("HTTP_X_REWRITE_URL")
...