2009-02-11 5 views
0

Я протестировал следующую модную перемотку на MAMP, но по какой-то причине она не работает на LAMP. Любая идея, что я делаю неправильно?Mod Rewrite Question - пересылка параметров на новые имена параметров

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^newParamA=(.*)&newParamB=([0-9]*)$ 
RewriteRule ^newfolder/newsubfolder/$ oldfolder/oldsubfolder\.php?oldParamC=%1\&oldParamD=%2 [QSA,L] 

Идея заключается в том, что запрос, такие как

http://domain.com/newfolder/newsubfolder/?newParamA=query&newParamB=111 

успешно сопоставить:

http://domain.com/oldfolder/oldsubfolder/?oldParamC=query&oldParamD=111 
+0

Вы используете ту же самую конфигурацию? – Gumbo

ответ

0

В ответ на комментарий Гамбо (в Используете ли вы тот же конфиг)

Yep - последняя версия Apache, с включенным mod_rewrite - Кажется, что он не нравится RewriteCond - если я прокомментирую это, по крайней мере работает перенаправление пути. Когда я раскомментирую RewriteCond, я получаю ошибку «Не найден».

+0

Да - Это все работает. Если я прокомментирую rewritecond, карту newfolder/newsubfolder в oldfolder/oldsubfolder Мне просто нужно отобразить параметры, но мне кажется, что это не похоже на rewriteCond –

0

В настоящее время я не знаю, что может вызвать подобное поведение. Но вы можете попробовать один из них:

RewriteCond %{QUERY_STRING} ^newParamA=([^&]*)&newParamB=([0-9]*)$ 
RewriteRule ^newfolder/newsubfolder/$ oldfolder/oldsubfolder.php?oldParamC=%1&oldParamD=%2 [QSA,L] 

RewriteCond %{QUERY_STRING} (^|&)newParamA=([^&]*)&newParamB=([0-9]*)($|&) 
RewriteRule ^newfolder/newsubfolder/$ oldfolder/oldsubfolder.php?oldParamC=%2&oldParamD=%3 [QSA,L] 

Или даже:

RewriteCond %{QUERY_STRING} (^|([^&]*&)*)newParamA=([^&]*)(.*) 
RewriteCond %3&%1&%4 ^([^&]*)(&[^&]*)*&newParamB=([0-9]*) 
RewriteRule ^newfolder/newsubfolder/$ oldfolder/oldsubfolder.php?oldParamC=%1&oldParamD=%3 [QSA,L]