2015-09-21 4 views
1

чтобы запретить многократное повторение папки языка на моем сайте http://domain.com/en/fr/es/ я установил следующее правило:захвата первого значение группы RegEx

RewriteRule ^([a-z]{2}/){2,}(.*)$ /$1$2 [R=301,L] 

Это работает хорошо, но моя проблема заключается в том, что первое захвачена группе возвращение es, но Я хотел бы получить первую папку языков en. Как я могу это сделать?

ответ

1

Изменение правила к этому:

RewriteRule ^([a-z]{2}/)(?:[a-z]{2}/)+(.*)$ /$1$2 [R=302,L] 

Проблема в шаблоне, что ([a-z]{2}/){2,} соответствует всем en/fr/es/ и сохраняет es/ в захваченном группе.

С моим предложенным регулярным выражением мы будем снимать только en/ в первой группе захвата, а следующая группа, не участвующая в захвате, будет соответствовать fr/es/, таким образом, используя $1=en/ по желанию.

+1

WOW, вы рок! спасибо тебе очень много :) – Websphere

+0

Я просто не понимал '?:', для чего это? – Websphere

+1

Lovely, тысяча спасибо;) – Websphere

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