Назад | Перейти на главную страницу

Несколько настраиваемых перенаправлений с apache

Я хотел бы настроить несколько перенаправлений с помощью 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. Но когда дело доходит до директив прокси, они работают по принципу упорядоченного, первого совпадения.