Как вы используете перезаписать с поиском на карте - PullRequest
0 голосов
/ 29 декабря 2011

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

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 может не совпадать на карте содержимого. Это нормально, но правило все еще пытается (или, по-видимому, так) переписать, когда было бы лучше, если бы этого не произошло.

Моя первоначальная мысль состоит в том, чтобы поместить правило перезаписи над правилом, но как вы выполняете поиск?

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

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

RewriteMap contentmap txt:content/maps/contentmap.txt [NC]
RewriteCond ${contentmap:$1|NOT_FOUND} !NOT_FOUND
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L]
1 голос
/ 29 декабря 2011

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

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

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

...