Изменение моего htacess для перенаправления на SSL URL - PullRequest
0 голосов
/ 30 ноября 2018

Мой текущий .htaccess выглядит так:

Redirect 301 /~mysite-net/vlog http://www.example.net/vlog
Redirect 301 /~mysite-net/pp https://www.example.net/pp
Redirect 301 /~mysite-net/pp02 https://www.example.net/pp02
Redirect 301 /~mysite-net/pp03 https://www.example.net/pp03
Redirect 301 /~mysite-net/ http://www.example.net/

RewriteEngine On
RewriteRule ^([A-Za-z0-9]+).html$ https://www.example.net/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*?)/?$ index.php?s=$1 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ index\.php\?s=([^\s]*)
RewriteRule ^/?(.*?)/?$ %1?%2%3 [L,R=301]

это делает то, что задумано, так что нет проблем.Однако теперь мне нужно изменить его, чтобы он всегда перенаправлялся на версию SSL моего сайта.Это означает, что независимо от того, будет ли пользователь вводить http, он всегда будет перенаправлять их на https.

Поэтому я просто добавил эти строки внизу:

RewriteCond %{HTTP_HOST} ^example\.net [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.net/$1 [R,L]

, но это не работает.Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Итак, я просто добавил эти строки внизу:

RewriteCond %{HTTP_HOST} ^example\.net [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.net/$1 [R,L]

Есть две проблемы с вашими существующими директивами:

  • Выпоместите их не в том месте в вашем файле - они должны идти сверху, а не снизу.Помещая их в конец файла, они будут обрабатываться только при запросе статических ресурсов, так как в противном случае предыдущие директивы будут «перехватывать» URL.

  • Вы пытаетесь объединить не-www для www перенаправления также в этой директиве, однако, вы пропустили флаг OR при первом условии, поэтому он никогда не будет перенаправлять запросы на http://www.example.net/foo.

Inдругими словами, в top вашего файла.

RewriteCond %{HTTP_HOST} ^example\.net [NC,OR]
RewriteCond %{SERVER_PORT} 80 
RewriteRule (.*) https://www.example.net/$1 [R=301,L]

Условие RewriteCond %{HTTPS} !on, упомянутое в другом ответе, является просто альтернативой вашему условию SERVER_PORT.

0 голосов
/ 30 ноября 2018

Может быть, это может быть работа, я думаю, вы забыли поставить RewriteCond %{HTTPS} !on

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
...