Удалите IP-адрес из Строки запроса с помощью HTACCESS

У меня есть URL как так:

http://example.com/one/?ACT=123&gateway=mygateway&method=mymethod&orderID=303¤cy=EUR&amount=11&PM=CreditCard&ACCEPTANCE=test123&STATUS=9&CARDNO=XXXXXXXXXXXX1111&ED=0517&CN=Test+test&TRXDATE=08%2F12%2F10&PAYID=7963938&NCERROR=0&BRAND=VISA&ECI=7&COMPLUS=q5up5h9i6clkkpsntdmupijpl5&IP=169%2E59%2E201%2E137&SHASIGN=1E02A96814AF21FD5415A285FB51A46DFCD6EF4D

Я пытаюсь удалить следующую переменную запроса из строки запроса в URL IP=169%2E59%2E201%2E137 при оставлении остальной части строки неповрежденной. Та переменная является IP-адресом, который может быть другим IP-адресом каждый раз, но всегда будет IP. Одна из систем CMS, которые я использую, будет ошибка, если IP-адрес будет найден в строке запроса из соображений безопасности. К сожалению, я должен был отправить данные от платежного шлюза, и нет никакого пути в шлюзе для выключения IP-адреса, который это отправляется от них. Если я должен собрать данные, отправленные на мой CMS, то у меня должен быть IP в запросе удаленное или замененное использование HTACCESS.

    RewriteEngine On 
RewriteCond %{THE_REQUEST} ^GET\ /.*\ HTTP/ [NC]
RewriteCond %{QUERY_STRING} IP= [NC]
RewriteCond %{QUERY_STRING} (.*)(IP=[0-9]{1,3}%252E[0-9]{1,3}%252E[0-9]{1,3}%252E[0-9]{1,3})(.*) [NC]
RewriteRule .* %{REQUEST_URI}?%1%3 [R=301,L]

Так, я начал писать что-то вроде этого, но честно я сосу в mod_rewrite и регулярных выражениях.

Я не забочусь, установлено ли это на IP=123 или просто удалено, но это не может быть отформатировано как IP. Сообщите мне, можно ли помочь!

1
задан Chris Newton 12 August 2010 в 04:29
поделиться

2 ответа

РЕДАКТИРОВАТЬ: Это на самом деле неверно и не сработает. Я не собираюсь его менять, потому что ответ Cags уже решает проблему, поэтому, пожалуйста, просто проигнорируйте это.

Ваша проблема в том, что % {REQUEST_URI} включает значения GET. Итак, в конце вы просто добавляете все, кроме IP, в конец снова, но IP все еще там. Кроме того, вам не нужны все эти условия. Вы должны уметь делать все с помощью одного правила, например:

RewriteEngine on
RewriteRule ^(.*)(IP=[0-9]{1,3}%252E[0-9]{1,3}%252E[0-9]{1,3}%252E[0-9]{1,3})(.*)$ $1$3

Дайте мне знать, работает ли это для вас.

0
ответ дан 2 September 2019 в 22:15
поделиться

Я не уверен насчет ваших первых двух RewriteConds, но что-то вроде этого должно работать ...

RewriteCond %{QUERY_STRING} (.*)IP=\d{1,3}%2E\d{1,3}%2E\d{1,3}%2E\d{1,3}&(.*) [NC]
RewriteRule ^(.*)$ /$1?%1%2 [R=302,L]

Это предполагает, что всегда будет параметр после IP-адреса, если это не так, вы можете удалить &, но тогда вы получите двойные амперсанды. Вы всегда можете переместить его до IP, если ему всегда предшествует значение. В любом случае я предполагаю, что любая используемая вами услуга является довольно стандартной.

NB: Я всегда использую 302 в целях тестирования, поскольку после кеширования форварда в браузере могут возникнуть трудности с тестированием изменений. Как только он заработает, верните его на 301.

2
ответ дан 2 September 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: