Избегайте разделения URI в mod_rewrite с прокси - PullRequest
1 голос
/ 25 января 2020

У меня есть Angular веб-сайт, работающий на localhost:4000. Чтобы выбрать язык для отображения, Angular перехватывает параметр URL lang. Например:

localhost:4000/contact?lang=en

На производстве, где я использую рендеринг на стороне сервера, цель состоит в том, чтобы сопоставить один Apache VitualHost с одним языком. То есть вместо использования параметра ?lang=en используйте поддомен en.mywebsite.com. Следующий фрагмент кода должен помочь:

<VirtualHost *:443>
        ServerName en.mywebsite.com

        RewriteEngine on
        RewriteLog /var/log/rewrite.log
        RewriteLogLevel 3
        RewriteRule ^(.*)$  "http://localhost:4000%{REQUEST_URI}?lang=en" [P]
</VirtualHost>

Поскольку он не работает должным образом, я проверяю файл rewrite.log и нахожу следующие соответствующие строки:

83.39.107.215 - - [25/Jan/2020:12:24:05 +0100] [en.mywebsite.com/sid#558a5a36a790][rid#558a5a5f74f8/initial] (2) init rewrite engine with requested uri /contact
83.39.107.215 - - [25/Jan/2020:12:24:05 +0100] [en.mywebsite.com/sid#558a5a36a790][rid#558a5a5f74f8/initial] (3) applying pattern '^(.*)$' to uri '/contact'
83.39.107.215 - - [25/Jan/2020:12:24:05 +0100] [en.mywebsite.com/sid#558a5a36a790][rid#558a5a5f74f8/initial] (2) rewrite '/contact' -> 'http://localhost:4000/contact?lang=en'
83.39.107.215 - - [25/Jan/2020:12:24:05 +0100] [en.mywebsite.com/sid#558a5a36a790][rid#558a5a5f74f8/initial] (3) split uri=http://localhost:4000/contact?lang=en -> uri=http://localhost:4000/contact, args=lang=en
83.39.107.215 - - [25/Jan/2020:12:24:05 +0100] [en.mywebsite.com/sid#558a5a36a790][rid#558a5a5f74f8/initial] (2) forcing proxy-throughput with http://localhost:4000/contact
83.39.107.215 - - [25/Jan/2020:12:24:05 +0100] [en.mywebsite.com/sid#558a5a36a790][rid#558a5a5f74f8/initial] (1) go-ahead with proxy request proxy:http://localhost:4000/contact [OK]

Я предполагаю, что цель состоит в том, чтобы пропустить четвертую строку (разделить URI). Тем не менее, я не смог найти решение. Любая помощь будет приветствоваться.

...