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

Перенаправить http на https вернуть двойную косую черту

Моя система - Centos 7 и Apache 2.4.6

Мне нужно перенаправить http на https с помощью Apache httpd.conf, я просмотрел сотни страниц и нашел несколько кодов, но это хорошо и не жестко закодировано из DigitalOcean но он возвращает двойную косую черту в конце URL-адреса и это изображение для различных результатов перенаправления

<VirtualHost IP:80>

   # https/http www -> https non-www

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

   # http non-www -> https non-www
   RewriteCond %{HTTPS} !=on
   RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

</VirtualHost>

<VirtualHost IP:443>

   # I removed this from 443 and the same result
   # https/http www -> https non-www
   RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
   RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

</VirtualHost>

Это потому, что вы берете первую косую черту в (. *):

RewriteRule ^ (. *) $ https: //% 1 /1 доллар США [R = 301, L]

Этот вид регулярных выражений используется в контексте для каждого каталога, где первая косая черта не используется и не применяется, в контексте виртуального хоста первая косая черта присутствует, поэтому вы захватываете и добавляете ее к результату с помощью (. *).

Итак, один из наиболее типичных и правильных способов сделать это в контексте виртуального хоста - вручную добавить косую черту перед группой захвата:

RewriteRule ^/(.*) https://%1/$1 [R=301,L]

Примечание: я удалил знак «$», потому что при захвате всего не нужно указывать «конец».