2015-01-08 2 views
0

Я пытаюсь создать правило Apache Rewrite для следующих условий:Apache RewriteRule беды

Оригинальный URL: https://somewebsite.com/GCSWEB/runSavedReport.do?mode=excel&reportID=40678 Новый URL: https://somewebsite.com/demo/runSavedReport.do?mode=excel&reportID=40678

Таким образом, только когда /runSavedReport.do?mode = excel & requestID = xxxxx запрашивается веб-путь/GCSWEB будет заменен на/demo. Все остальные части URL-адреса останутся прежними. Я закодированы следующие, но это не работает:

RewriteRule ^/GCSWEB/runSavedReport\.do\?mode=excel\&reportID=([0-9]+)$ https://somewebsite.com/demo/runSavedReport.do?mode=excel&reportID=$1 [R=301,L] 

Важно также отметить, у меня есть еще одно существующее правило, которое работает отлично, который перенаправляет запрос на любой/GCSWEB/хххх/ххх/с демо. Однако я хочу, чтобы это новое правило переопределяло существующее правило, если вызывается указанный выше URL. Любой другой URL-адрес опустится до существующего правила и будет перенаправлен на простое/демо (без каких-либо других дополнений к URL-адресу). Действующее правило выглядит так:

RewriteRule ^/GCSWEB/(.*) https://somewebsite.com/demo/? [R=301,L] 

Работает над новым правилом весь день без успеха. Я даже пытался удалить существующее правило, думая, что может быть какой-то конфликт, но это не помогло.

ответ

0

Если у вас есть существующее правило, соответствующее URL-адресу, вы должны написать свой новый сверху.

Кроме того, RewriteRule не соответствует части запроса URL-адреса. Вы не должны использовать вместо RewriteCond:

RewriteCond %{QUERY_STRING} ^mode=excel&reportID=([0-9]+)$ 
RewriteRule ^/GCSWEB/runSavedReport\.do$ /demo/runSavedReport.do?mode=excel&reportID=%1 [R=301,L] 

Кроме того, так как нет никаких изменений в протоколе (https) ни в имени домена (lhdata-dev.bankofamerica.com), нет необходимости указывать их в переписывания части.

+0

Удивительный! Это сработало. Цените помощь! – Bribo

+0

Привет @Bribo, если этот или любой ответ решил ваш вопрос, пожалуйста, рассмотрите [его принятие] (http://meta.stackexchange.com/q/5234/179419), щелкнув галочку. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. Это не обязательно. – NuTTyX