Url перенаправления не работает

Я реализовал безопасность SSL для моего рабочего веб-сайта. Код в моем httpd.conf-файл, реализующий это, выглядит следующим образом:

<VirtualHost *:80> 
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>

Это работает просто отлично, и все запросы всегда перенаправляются через https.

У меня есть регистрация.html страница на моем сервере. Я хочу рекламировать путь URL страницы регистрации на моей визитной карточке, печатных маркетинговых материалах и т.д. попросив читателей подписаться на

www.example.com/signup

Для реализации этого я добавил следующее в httpd.conf

<VirtualHost *:80> 
ServerName www.example.com
Redirect permanent / https://www.example.com/
Redirect /signup https://www.example.com/signup.html
</VirtualHost>

Но это не работает. Это дает мне ошибку 404: / регистрация не найдена.

Перенаправление для / Регистрация хорошо работает в моем тестовом сервере, который не включен SSL. Поэтому я предполагаю, что это связано с тем, как мой оператор перенаправления работает с другим оператором перенаправления SSL.

Ценю вашу помощь.

Спасибо

2 ответа

  1. Для www.example.com/signupapache выбирает это правило, потому что появляется первый

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

    И https://www.example.com/signupне существует

    См. документацию apache https://httpd.apache.org/docs/current/mod/mod_alias.html

    Во-вторых, псевдонимы и перенаправления обрабатываются в том порядке, в котором они появляются в файлах конфигурации, причем первое совпадение имеет приоритет

    Попробуйте изменить порядок

    <VirtualHost *:80> 
    ServerName www.example.com
    Redirect /signup https://www.example.com/signup.html
    Redirect permanent / https://www.example.com/
    </VirtualHost>
    
  2. Попробуйте переместить Redirect /signup ...линию выше Redirect / ...линии. Что-то вроде этого:

    <VirtualHost *:80> 
        ServerName www.example.com
        Redirect permanent /signup https://www.example.com/signup.html
        Redirect permanent / https://www.example.com/
    </VirtualHost>
    

    Возможно, вам придется очистить кэш браузера, чтобы удалить все сохраненные постоянные перенаправления.