Условная перезапись URL-адресов, содержащих восклицательный знак! - PullRequest
0 голосов
/ 12 июля 2011

Оба

domain.com/blog/post/2011/01/25/This-Is-The-Post-Title!.aspx
domain.com/blog/post/2011/01/25/This-Is-The-Post-Title.aspx

необходимо перенаправить на

domain.com/blog/2011/01/25/this-is-the-post-title

Следующее правило работает для URL-адресов без восклицательного знака, но я не могу получить условие для удаления!из URL, если он существует.

RewriteRule ^blog/post(.*).aspx$ /blog${lc:$1} [R=301,L]

Есть идеи?

1 Ответ

1 голос
/ 12 июля 2011

Добавьте эту строку перед вашим правилом:

RewriteRule (.*)!(.*) $1$2 [N,DPI]

Это удалит ВСЕ ! символов в URL (только часть пути, строка запроса не затрагивается). Вы можете изменить его так, чтобы он относился только к заголовкам статей блога - до вас.

Будьте осторожны, хотя - он использует флаг [N], который заставляет Apache снова начать переписывать из верхнего правила, чтобы удалить все вхождения, иначе будет заменено только первое вхождение (если их больше один !). Поэтому я рекомендую поместить это правило где-нибудь сверху .

Альтернатива для [N] flag будет иметь это правило без этого флага, но несколько раз один за другим.

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_n

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...