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

Перенаправить запрос порта 80 на 443 для сайта

Мне удалось перенаправить мои запросы с порта 80 на порт 443, используя постоянное перенаправление.

Однако есть проблема. На моей странице есть ссылка на /forum/. Когда вы нажимаете ссылку, он пытается перейти на https://futureretrogaming.comforum без косых черт.

Что с этим делать?

<VirtualHost *:80>
    ServerAdmin kevin.miller@futureretrogaming.com
    DocumentRoot "/var/www/frg"
    ServerName www.futureretrogaming.com
    ServerAlias futureretrogaming.com
    ServerAlias futureretrogaming.net
    ServerAlias www.futureretrogaming.net
    ErrorLog "/var/www/frg/log/error.log"
    CustomLog "/var/www/frg/log/access.log" common
    <Directory /var/www/frg>
                DirectoryIndex index.html index.php
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
    </Directory>
    Redirect permanent / https://futureretrogaming.com/
</VirtualHost>

Попробуйте использовать mod_rewrite вместо простого Redirect. Сначала убедитесь, что в вашей установке Apache mod_write включается с помощью этой команды; это работает для Ubuntu / Debian:

sudo a2enmod rewrite 

Затем перезапустите Apache; снова это работает для Ubuntu / Debian:

sudo service apache2 restart

И теперь ваш сервер должен иметь возможность обрабатывать mod_write инструкции. Поэтому настройте конфигурацию вашего виртуального хоста следующим образом:

<VirtualHost *:80>
    ServerAdmin kevin.miller@futureretrogaming.com
    DocumentRoot "/var/www/frg"
    ServerName www.futureretrogaming.com

    ServerAlias futureretrogaming.com
    ServerAlias futureretrogaming.net
    ServerAlias www.futureretrogaming.net

    ErrorLog "/var/www/frg/log/error.log"
    CustomLog "/var/www/frg/log/access.log" common

    <Directory /var/www/frg>
        DirectoryIndex index.html index.php
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    // Redirect permanent / https://futureretrogaming.com/
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

</VirtualHost>

Если вы заметили, я закомментировал Redirect у вас был на месте и добавлен некоторый интервал для удобства чтения. И вы можете проверить это из командной строки, используя curl -I как это:

curl -I http://futureretrogaming.com/forum

И результаты, которые я вижу прямо сейчас, показывают, что это работает:

HTTP/1.1 302 Found
Date: Fri, 30 May 2014 02:03:46 GMT
Server: Apache/2.2.22 (Ubuntu)
Location: https://futureretrogaming.com/forum
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1

В некоторой степени не связаны, но, поскольку я это замечаю, вы также можете немного облегчить себе жизнь, объединив и упростив некоторые из ServerAlias материал:

ServerAlias futureretrogaming.com
ServerAlias futureretrogaming.net
ServerAlias www.futureretrogaming.net

Вместо 3 строк, которые можно было бы объединить в одну:

ServerAlias futureretrogaming.* www.futureretrogaming.*

Подстановочный знак охватывает все домены верхнего уровня, такие как .com, .net & четный .org а также другие.