2013-03-13 2 views
1

Извините за плохой заголовок вопроса.RewriteRule- regex для выбора строки

Мой вопрос заключается в том, что я хочу, чтобы выполнить внутреннюю перезапись на следующие 3-х шаблонов URL только

localhost/abc 
localhost/def 
localhost/xyz 

подстановки:

localhost/stackoverflow/abc 
localhost/stackoverflow/def 
localhost/stackoverflow/xyz 

Я попытался написать регулярное выражение для любой строки -^(. *) $. RewriteRule ниже

RewriteRule ^(.*)$ /stackoverflow/$1 

Но он работает в бесконечном цикле и ищет URL

localhost/stackoverflow/abc/abc/abc/abc... 

Я хочу, чтобы регулярное выражение, которое будет детектировать любой из 3-х строк только -> «ABC», «DEF», «XYZ», которые будут затем добавляются к конечному URL

ответ

3

правильный подход для обнаружения только те строки, чтобы вложить их в OR группе (abc|def|xyz):

RewriteEngine On 
RewriteRule ^(abc|def|xyz)$ stackoverflow/$1 [L] 

Ваша попытка была брошена в петлю переписывания, потому что (.*) спичек все,, в том числе stackoverlfow. Предшествующая группа OR с ^ гарантирует, что она будет соответствовать только в начале URI.

+0

Спасибо, Майкл. Это сработало :) – Bhuvan

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