2015-11-30 3 views
0

Я использую подобный код следующие в моем HTTPd-апаше 2,2 файлаПреломления строки запроса и получение значения

<Location /local/*/*/*> 
setHandler dispatcher-handler 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^.*.*.* [NC] 
RewriteRule ^/?(.*)/(.*)/(.*)$ www.dns.com/product.html?state=$1&city=$2&product=$3 [R] 
</Location> 

Когда я даю url- www.dns.com/local/1/2/3 в браузере В журналах запрос разбивается следующим образом:

state=opt/apache/httpserver/htdocs/local/1&city=2&product=3 

Как код HTTPD файл, так что state должен принимать только 1 вместо того, чтобы полностью «документ-корень» путь и «местный»?

В идеале я хочу state=1, city=2, product=3 , как можно достичь этой функции?

+1

'RewriteRule' совпадает на компоненте пути лишь запрашиваемого URI. Если вы хотите проверить содержимое строки запроса, вам нужно использовать 'RewriteCond' (подробности см. В документах). – CBroe

ответ

0

Проблема заключается в вашей цели, начиная с «www.dns.com», которая пропускает часть протокола «http: //» для того, чтобы быть стандартным компилятором. Вы можете легко исправить, либо изменить его на

RewriteRule ^/?(.*)/(.*)/(.*)$ http://www.dns.com/product.html?state=$1&city=$2&product=$3 [R] 

или используя ток-хост относительный путь, как это:

RewriteRule ^/?(.*)/(.*)/(.*)$ /product.html?state=$1&city=$2&product=$3 [R] 
+0

Я попытался с RewriteRule^/? (. *)/(. *)/(. *) $ http://www.dns.com/product.html?state=$1&city=$2&product=$3 [R] и все еще получаю такую ​​же проблему ..........., если я даю www.dns. com/local/1/2/3 ...... state = opt/apache/httpserver/htdocs/local/1 & city = 2 & product = 3 ........ я хочу избавиться от "opt/apache/httpserver/htdocs/local ' –

+0

Я попытался с RewriteRule^/? (. *)/(. *)/(. *) $ http://www.dns.com/product.html?state=$1&city=$2 & product = $ 3 [R] и все еще получаю такую ​​же проблему ........... если я даю www.dns.com/local/1/2/3 ...... state = opt/apache /httpserver/htdocs/local/1&city=2&product=3........i хотите избавиться от «opt/apache/httpserver/htdocs/local» –

+0

Прочтите мой ответ еще раз. –

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