Перенаправление веб-сайтов периодически работает в Firefox, но не работает вообще в IE [дубликат]

После того, как несколько попыток обнаружили ошибку при перенаправлении веб-сайтов, мне удалось выполнить перенаправление веб-сайтов, но оно периодически работает в Firefox, но не работает вообще в IE. Мне удалось очистить весь кеш и повторить попытку в Firefox, и он работает, но, как ни странно, после этого не работает. Я подтвердил, что в то время я не вносил никаких изменений ни в какие файлы. Кто-нибудь догадывался или сталкивался с этим раньше? Я был оооочень счастлив, что мой веб-сайт, наконец, перенаправляет, даже если я был счастлив, как 2 минуты, потом оказалось, что перенаправления не было снова. : ((Мне просто нужно перенаправить, когда я набираю http://example.com , он перенаправляет на https://www.example.com Ниже мое перенаправление в файле .htaccess:

RewriteEngine On
#Options +FollowSymLinks
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$[OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

Ниже мои журналы:

init rewrite engine with requested uri /
pass through /
[perdir D:/wamp64/www/example/] strip per-dir prefix: D:/wamp64/www/example/ -> 
[perdir D:/wamp64/www/example/] applying pattern '.*' to uri ''
[perdir D:/wamp64/www/example/] RewriteCond: input='off' pattern='!on' => matched
[perdir D:/wamp64/www/example/] RewriteCond: input='www.example.com' pattern='^www\\.example\\.com$' => matched
[perdir D:/wamp64/www/example/] rewrite '' -> 'https://www.example.com/'
[perdir D:/wamp64/www/example/] explicitly forcing redirect with https://www.example.com/
[perdir D:/wamp64/www/example/] escaping https://www.example.com/ for redirect
[perdir D:/wamp64/www/example/] redirect to https://www.example.com/ [REDIRECT/301]

Я также обнаружил, что мой веб-сайт перенаправляет только при выходе из VPN (мне нужен VPN, чтобы я мог подключиться к серверу, чтобы исправить или получить информацию что я сделал для перенаправления)

Ниже приведен элемент, который я добавил в файл .htaccess:

    RewriteCond %{HTTPS} !on [OR]
    RewriteCond %{HTTP_HOST} ^example\.com$
    RewriteCond %{HTTP_HOST] ^www\.example\.com$
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

Ниже мой httpd-vhosts.conf:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot "d:/wamp64/www/example"
    <Directory  "d:/wamp64/www/example/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    </Directory>
</VirtualHost>

Мой сертификат SSL был настроен в httpd-ssl.conf, поэтому я укажите мой httpd-vhosts.conf как VirtualHost *: 80 Ниже мой httpd-vhosts.conf:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot "d:/wamp64/www/example"
    <Directory  "d:/wamp64/www/example/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    </Directory>
</VirtualHost>

Обновление

Ниже показано, что я обновляю в .htaccess, добавляя [OR]:

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

И ниже представлены журналы, которые я получил:

strip per-dir prefix: D:/wamp64/www/example/ -> 
applying pattern '.*' to uri ''
RewriteCond: input='off' pattern='!on' => matched
rewrite '' -> 'https://www.example.com/'
explicitly forcing redirect with https://www.example.com/
escaping https://www.example.com/ for redirect
redirect to https://www.example.com/ [REDIRECT/301]

Я попробовал это снова в браузере, но он не был перенаправлен. Я также пытаюсь отлаживать в firefox, и у меня есть хост example.com

Это то, что я получил от удаление [ИЛИ]

RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

журналов:

RewriteCond: input='off' pattern='!on' => matched
RewriteCond: input='www.example.com' pattern='^example\\.com$' => not-matched

Пожалуйста, скажите мне, что мое перенаправление работает, потому что я работал над этим несколько месяцев и Я сейчас потеряю идею (надеюсь, это не из-за моей глупой ошибки ... молитвы!).Пожалуйста, помогите мне и заранее спасибо!

2
задан 8 April 2020 в 08:46
3 ответа

Я считаю, что вам на самом деле не нужно это условие:

RewriteCond %{HTTP_HOST} ^www\.example\.com$

Потому что это вызовет бесконечный цикл перенаправления к самому себе, учитывая, что это из .htaccess , который применяется к версии https: // www :

RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
3
ответ дан 4 January 2021 в 07:55

Я считаю, что это пропущенный пробел. Пожалуйста, измените это:

RewriteCond %{HTTP_HOST} ^example\.com$[OR]

на это:

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]

Записи вашего файла журнала доказывают, что http://www.example.com был успешно переписан на https://www.example.com/ . Они ничего не доказали насчет http://example.com . Добавление пробела должно исправить последнее.

2
ответ дан 4 January 2021 в 07:55

Вместо mod_rewrite вы должны использовать что-то вроде этого в определении Virtualhost:

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

Согласно документации Apache httpd .

mod_rewrite следует рассматривать как последнее средство, когда другие альтернативы не найдены. Использование его, когда есть более простые альтернативы, приводит к запутанным, хрупким и сложным в обслуживании конфигурациям.

1
ответ дан 4 January 2021 в 07:55

Теги

Похожие вопросы