Я перенаправляю URL-адрес, и я хотел использовать директиву RewriteRule, когда в этом процессе.
В настоящее время у меня есть следующее правило:
RewriteRule ^/application/web/reservation/index.jsp https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
Однако я также хочу, чтобы это работало, если языковой стандарт добавлен в конец первого URL-адреса. Это могут быть разные локали (никогда не статические), поэтому я хочу, чтобы RewriteRule брал все, что идет после «.jsp» в первом URL-адресе, и помещал его после «.zul» во втором.
Например что-то вроде:
RewriteRule ^/application/web/reservation/index.jsp(*)$ https://application.domain.com/application2/web/reservation/audioForm.zul$1 [R,L]
Я считаю, что у меня неправильный синтаксис для заменяющей части:
(*)$ and $1 respectively
Чтобы вы могли видеть, как выглядит ссылка с локалью, я поместил пример ниже:
https://application.domain.com/application/web/reservation/index.jsp?locale=de-DE
Я бы хотел поместить "? Locale = de-DE" после .zul во второй URL.
Может ли кто-нибудь сказать мне, что я делаю не так? Любая помощь будет принята с благодарностью.
Наилучшие пожелания
На самом деле ваш собственный ответ неверен.
Чтобы соответствовать конкретному (здесь важно конкретное слово) Строка запроса, например, в приведенном вами примере "? locale = de-DE '", вы бы нужен RewriteCond Делать это.
Но в этом конкретном случае, поскольку целевой URL-адрес не указывает строку запроса, поведение по умолчанию из mod_rewrite заключается в добавлении к нему исходной строки запроса (какой бы она ни была), если вы не укажете флаг QSD (отбрасывание строки запроса).
Итак, вкратце:
RewriteRule ^/application/web/reservation/index.jsp https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
или даже:
RewriteRule ^/application/web/reservation/index.jsp$ https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
соответствует запросу на:
"/application/web/reservation/index.jsp?whatever"
и добавит любую строку запроса к указанной вами цели:
"https://application.domain.com/application2/web/reservation/audioForm.zul"потому что в нем не указана строка запроса.
Я действительно понял это после пары часов игры и исследования API mod_rewrite.
Модуль Apache mod_rewrite - HTTP-сервер Apache
Вместо того:
^/application/web/reservation/index.jsp(*)$
Я использовал:
^/application/web/reservation/index.jsp(.*)