регулярное выражение и получение косой черты плюс символы из URL-адреса

Почему это правило не возвращает косую черту с символами?

RewriteRule ^test/(.+)/(.+)/(.+)/?$ test.php?one=$1&two=$2&three=$3

Например, в этом URL

mysite.com/test//one///two// //три///

Он вернется

$1='one' 

$2='two' 

$3='three' 

Но я хочу, чтобы он вернулся

$1='/one' 

$2='//two' 

$3='///three///' 

Я также пробовал ^posts/{1}(.+)/{1}(.+)/{1}(.+)/?$, но это тоже не сработало...

ничего другого не приходит мне в голову. Кто-нибудь может помочь?

заранее спасибо


person Drust    schedule 01.01.2012    source источник


Ответы (2)


URL-адрес мог быть обработан ранее сервером, удалив двойные косые черты. Если вы соответствуете полному URL-адресу, все ли косые черты все еще на месте?

person Lucero    schedule 01.01.2012
comment
Благодарность! Я попробовал это регулярное выражение ^test/(.*)$ для предыдущего URL-адреса, и результат был $1='one/two/three/'. Кажется, apache удаляет несколько косых черт без перенаправления на исправленный URL-адрес. Я пытался предотвратить дублирование контента на своем сайте, но apache делает это намного сложнее! - person Drust; 02.01.2012

Попробуй это:

RewriteRule ^test(/+[^/]+)(/+[^/]+)(/+[^/]+/*)$ test.php?one=$1&two=$2&three=$3
person ridgerunner    schedule 01.01.2012
comment
Это регулярное выражение отлично работает и для предыдущего URL-адреса (этот apache автоматически изменяется на mysite.com/test/one/two/three/, результат равен $1='/one' $2='/two' $3='/three/', и кажется, что он работает, если apache не удаляет несколько косых черт! - person Drust; 02.01.2012