Помогите с Regex сопоставить и переписать URI - PullRequest
0 голосов
/ 05 июля 2010

Мне нужен RegEx, который будет соответствовать URI, подобному этому, на основании субдомена "blog" -

http://blog.foo.com/2010/06/25/city-tax-sale/

и перенаправить так (избавиться от субдомена и цифр / даты) -

http://foo.com/city-tax-sale/

где последний бит "городской налог-продажа" будет подстановочным знаком. Таким образом, в основном любой входящий URI, начинающийся с «blog.foo.com», будет перенаправлен на «foo.com» + независимо от того, что находится в конце вышеуказанного URI после трех подпутей с номерами.

Надеюсь, это имеет смысл. Просто пытаюсь создать один редирект вместо того, чтобы писать каждый.

Ответы [ 3 ]

3 голосов
/ 05 июля 2010

Это будет явно соответствовать вашему формату даты, а не любой серии цифр и слешей:

RewriteCond %{HTTP_HOST} ^blog\.foo\.com$ [NC]
RewriteRule ^/\d{4}/\d{2}/\d{2}/(.*)$ http://foo.com/$1 [L,R=301]

Часть регулярного выражения, которую можно разбить, делает для:

^      # start of non-domain url
/\d{4} # slash followed by 4 digits
/\d{2} # slash followed by 2 digits
/\d{2} # slash followed by 2 digits
/      # closing slash
(.*)   # rest of the url, captured to group 1
$      # end of url

С помощью $1 в замещающей группе 1.

В части опций:
L для "Last" - говорит, что не стоит искать другие правила.
R=301 дляПеренаправление с заголовком 301, что означает постоянное перенаправление (только R отправит временный заголовок 302)

Бит RewriteCond выполняет проверку без учета регистра (опция NC) заголовка HTTP_HOST (предоставляется пользователем / клиентом) и если он запускается blog.foo.com, он выполняет перезапись, в противном случае это не так.

2 голосов
/ 05 июля 2010
RewriteCond %{HTTP_HOST} ^blog.foo.com [NC] 
RewriteRule ^(\d+/)+(.*)/?$ http://foo.com/$2 [L,R=301]
0 голосов
/ 05 июля 2010

Вы можете попробовать это:

/http:\/\/blog\..*\.[a-zA-Z]{2,5}\/[0-9]{4}\/[0-9]{2}\/[0-9]{2}\/(.*)\//
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...