2015-08-07 3 views
0

Я пытаюсь сделать правило перезаписи, чтобы переместить все pdf-файлы на моем сайте, чтобы указать на определенную страницу, а затем использовать строку запроса как текущий путь к файлу pdf, чтобы посмотреть в словарь, чтобы узнать, находится ли этот url в моем словаре, если он перенаправляет их на правильную страницу. Ловушка - это мой словарь urls имеет% 20, и когда я вытягиваю строку запроса, она превращает %20 в пробел. Спасибо за любую помощь.URL Rewrite keep% 20 in Query String

Можете ли вы переписать его, чтобы сохранить% 20 ​​в строке запроса?

Пример URL: /example/example/Big%20Small%20Something%20Pad.pdf

Мой Rewrite:

RewriteRule ([^/]*)\.pdf$ /redirectPDF.aspx?pdf=$1.pdf [NE,QSA] 

Текущий Строка запроса Выход: Big Small Something Pad.pdf

То, что я хочу, чтобы это выглядело как это Big%20Small%20Someting%20Pad.pdf

+0

Вы используете ISAPI или Apache? –

+0

Jon Я использую IIS – Drew

+0

Просто размышляя над проблемой вашего «словаря», имеющей буквальный '% 20' в именах файлов ... не можете ли вы просто просто закодировать URL-адрес значения параметра, прежде чем искать его в словаре? Какой серверный язык вы используете? – MrWhite

ответ

1

Попробуйте удалить NE флаг , Согласно ISAPI документации:
http://www.helicontech.com/isapi_rewrite/doc/RewriteRule.htm:

noescape | NE

Не избежать вывода. По умолчанию ISAPI_Rewrite будет кодировать все символы, отличные от ANSI>, в виде шестнадцатеричных кодов% xx.

Похоже, вы просто хотите опустить NE так, чтобы он кодировал вывод, как это делается по умолчанию.

RewriteRule ([^/]*)\.pdf$ /redirectPDF.aspx?pdf=$1.pdf [QSA] 
+0

Это было первое, что я пробовал, и он не работает. – Drew