Я борюсь с конфигурацией обратного прокси-сервера и конкретной перезаписью / прокси-сервером в зависимости от URL-пути.
Сценарио:
Моя текущая конфигурация:
<VirtualHost *:80>
ServerName media.customer.com
RewriteEngine On
RewriteCond %{SERVER_PORT}s ^(443(s)|[0-9]+s)$
RewriteRule ^(.*)$ https://media.customer.com$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName media.customer.com
DocumentRoot /var/www/customer.com/
SSLEngine On
SSLCertificateKeyFile /etc/apache2/certs/server.key
SSLCertificateFile /etc/apache2/certs/server.crt
ProxyRequests Off
ProxyPass / http://serverName/
ProxyPassReverse / http://serverName/
ProxyHTMLEnable On
ProxyHTMLURLMap http://serverName/ /
</VirtualHost>
Это не будет большой проблемой, но нам нужно заставить работать следующие правила:
Приведенная выше конфигурация работает для:
Помещаю ли я "/ fotoweb /" в RewriteRule или ProxyPass, мы получаем удвоенные строки, например: http: //serverName/system/system/img/test.gif
На мой взгляд, мне нужно определить, является ли это базовым URL, а затем добавить «/ system /», в противном случае просто сопоставить с http. Но понятия не имею, как это сделать.
Заранее спасибо!
Это переписывает все, что не является HTTPS, на HTTPS:
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Не уверен, что вы считаете «базовым URL», но я предполагаю, что это HTTPS +, не начинающийся с «/ system». Это переписывает все, что не начинается с '/ system', на '/ system / ...':
RewriteCond %{REQUEST_URI} ! ^/system
RewriteRule .* /system%{REQUEST_URI} [R=301,L]
Если это просто '/', то:
RewriteCond %{REQUEST_URI} ^/$
RewriteRule .* /system/ [R=301,L]
Все в одном:
<VirtualHost *:80>
ServerName media.customer.com
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName media.customer.com
RewriteEngine on
RewriteCond %{REQUEST_URI} ! ^/system
RewriteRule .* /system%{REQUEST_URI} [R=301,L]
DocumentRoot /var/www/customer.com/
SSLEngine On
SSLCertificateKeyFile /etc/apache2/certs/server.key
SSLCertificateFile /etc/apache2/certs/server.crt
ProxyRequests Off
ProxyPass / http://serverName/
ProxyPassReverse / http://serverName/
ProxyHTMLEnable On
ProxyHTMLURLMap http://serverName/ /
</VirtualHost>