Я хотел бы настроить несколько перенаправлений с помощью apache, но совершенно не понимаю, как это сделать?
У меня есть экземпляр nodejs, который обслуживает мою домашнюю страницу, работающую на моем сервере через порт 4000. К нему можно получить доступ с сервера по адресу localhost: 4000 (порт 4000 не открыт для внешнего доступа).
У меня есть блог, который является экземпляром wordpress.
Блог находится по адресу mysite.com/blog.
Так. Я хотел бы, чтобы все запросы к mysite.com/blog/xxxxx были перенаправлены на экземпляр wordpress, а все другие запросы (например, mysite.com/xxxx/yyyy) перенаправлялись на экземпляр моего узла в http: // localhost: 4000 / xxxxx / yyyy
Мой файл конфигурации выглядит так
9 <VirtualHost *:80>
10
11 # Admin email, Server Name (domain name) and any aliases
12 ServerAdmin xxxxx
13 ServerName xxxxx
14 ServerAlias xxxxx
15
16
17 # Index file and Document Root (where the public files are located)
18 DirectoryIndex index.html index.php
19 DocumentRoot /xxx/xxx/public_html/xxx/public
.....
26 <Location />
?? What goes here?
31 </Location>
......
33 <Location /blog>
34 RewriteEngine On
35 RewriteBase /blog/
36 RewriteRule ^index\.php$ - [L]
37 RewriteCond %{REQUEST_FILENAME} !-f
38 RewriteCond %{REQUEST_FILENAME} !-d
39 RewriteRule . /blog/index.php [L]
40 </Location>
Я попытался настроить правила перезаписи и прокси, но либо блог не работает, либо не работает домашняя страница.
Я считаю (хотя могу ошибаться) процессы Apache <Location>
теги по порядку, поэтому, если вы хотите отобразить подпапку / blog, вам нужно сделать
<Location /blog>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</Location>
ProxyPass / http://localhost:4000/
ProxyPassReverse / http://localhost:4000/
попробуйте поставить следующие строки после ваш <Location /blog>...</Location>
часть:
ProxyPass / http://localhost:4000/
ProxyPassReverse / http://localhost:4000/
Я уже не совсем уверен, как работает сопоставление между директивами location и proxy. Но когда дело доходит до директив прокси, они работают по принципу упорядоченного, первого совпадения.