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

Apache: слишком много перенаправлений

Мой сценарий:

У меня запущен apache, разделяющий мой пользовательский интерфейс, и мой узел api работает на порту 2000, и у меня есть резервный прокси на apache для прокси-запроса к api, и я также настроил ssl, и я хочу перенаправить http на https. это моя следующая конфигурация

<VirtualHost *:80>

        ServerAdmin admin@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/public_html


        RewriteEngine on
        RewriteRule ^/api/v1/(.*) http://localhost:2000/api/v1/$1 [P,L]

        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>

Конфигурация SSL

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin admin@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/public_html     

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined    

        SSLEngine on 

        SSLCertificateFile  /etc/apache2/ssl/example.com.crt
        SSLCertificateKeyFile /etc/apache2/ssl/pkey.key    

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>


    </VirtualHost>
</IfModule>

у меня слишком много перенаправлений, как я могу решить эту проблему?

Вы можете просто использовать перенаправление вместо правил перезаписи:

<VirtualHost *:80> 
ServerAdmin admin@example.com    
ServerName example.com 

ServerAlias www.example.com 

Redirect permanent / https://www.example.com

ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined 


</VirtualHost>