RewriteCond RewriteRule для .htaccess на основе URL-адреса новой страницы, регулярное выражение - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть интересный RewriteRule, и я не уверен, что могу сделать регулярное выражение.

Короче говоря, я хотел бы изучить URL после второго / - на основе содержимого, возможно, вперед.

Суммируется до следующих двух правил:

  1. Перенаправление, если строка после секунды / содержит любую букву
  2. Перенаправление, если строка после секунды / длиннее 7 символов

Вот примеры:

http://www.mysite.org/section/subsection/2011 (ОК, ничего не делать)

http://www.mysite.org/section/subsection/2011-11 (ОК, ничего не делать)

http://www.mysite.org/section/subsection/2011-11-09 (НЕ ОК, перенаправление)

http://www.mysite.org/section/subsection/2011-11-W1 (НЕ ОК, перенаправление)

Пожалуйста, помогите мне с правилом перезаписи и перезаписи Cond

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Я основал следующее регулярное выражение на ваших примерах, которые, казалось, анализировали все после последнего '/' вместо второго.

/[^A-Za-z]{1,7}$

В простом английском языке это регулярное выражение соответствует группе символов, которая следует за '/' и содержит 1-7 неалфавитных символов. Чтобы он совпадал только с последним '/', я добавил '$', который соответствует концу строки.

Кроме того, поскольку вы имеете дело с URL-адресами, вы можете добавить "/?" перед '$' в случае, если в конце есть свисание '/'.

/[^A-Za-z]{1,7}/?$

Надеюсь, это ответит на ваш вопрос.

0 голосов
/ 09 ноября 2011

Как отмечает Лейн Асен, ваши примеры и правила не совпадают. Я использую ваши примеры, чтобы обозначить, что правила должны применяться к третьему сегменту пути, и предлагаю следующее. Вы не говорите, отличается ли назначение перенаправления или нет в зависимости от того, какое правило соответствует. Я принял это за другое.

RewriteEngine on
# redirect if any letter is contained in 3rd part of path
RewriteRule ^([^/]+/){2}.*[a-zA-Z] http://www.bbc.co.uk [R=permanent,L]
# redirect if there are more than 7 characters in 3rd part of the path
RewriteRule ^([^/]+/){2}.{7,} http://www.ibm.com [R=permanent,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...