2011-12-29 3 views
0

У меня есть карта, которую я использую для перезаписи URL-адресов в моем приложении MVC asp.net. Я хотел бы, чтобы это правило было обусловлено наличием значения поиска на карте.Как вы используете rewritecond с поиском на карте

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 

это принимает URL home/some-content-id и переписывает его как home/someaction/some-content-id

Проблема Я бегу в иногда картина home/some-other-content-id может не соответствовать в карте контента. То нормально, но правило все еще пытается (или, казалось бы, так) переписать, когда было бы лучше, если бы это не так.

Моя первоначальная мысль - поставить rewritecond выше правила, но как вы выполняете поиск?

ответ

1

Вы пробовали:

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteCond ${contentmap:$1} >"" [NC] 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 

Значение, если ${contentmap:$1} результаты ни в чем большем, чем пустая строка («»), а затем продолжить с правилом.

+0

Спасибо, это работало хорошо и дал мне идею отвратительной eurl.axd мусор в iis6 обращении extensionless URL. – jason

1

Пожалуйста, попробуйте следующий синтаксис:

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteCond ${contentmap:$1|NOT_FOUND} !NOT_FOUND 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 

 Смежные вопросы

  • Нет связанных вопросов^_^