У меня есть 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). Тем не менее, я не смог найти решение. Любая помощь будет приветствоваться.