Удалить www-сайт в целом, принудительно использовать https в некоторых каталогах и http в остальных?


Во-первых, я хотел бы удалить www. от моего доменного имени

Http://www.example.com => http://example.com

Я также хотел бы, чтобы некоторые каталоги были безопасными (https), в то время как остальные остаются http

Http://example.com/login => https://example.com/login

Очевидно, что он должен работать для всех условий, например, если кто-то вводит:

Http://www.example.com/login => https://example.com/login

Также, когда люди переходят от страницы входа в систему, она возвращается к http. В настоящее время в г.htaccess-это следующее, что автоматически выполняется программным обеспечением, которое я использую, и я предполагаю, что оно должно быть там, чтобы работать:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ./index.php

Есть идеи о том, как я могу достичьконтроля над сновидениями всего этого?

Заранее спасибо!

===================

@Gumbo следуя вашему совету это мое полное .htaccess

RewriteEngine On


# remove www from host
RewriteCond %{HTTP_HOST} ^www.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]

# force HTTPS
RewriteCond %{HTTPS} =off
RewriteRule ^(login)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# force HTTP
RewriteCond %{HTTPS} =on
RewriteRule !^(login)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ./index.php


Options -Indexes

Переход к http://example/login все еще идет к http://example/index.php когда он должен перейти к https://example/login у меня неправильный порядок?

4 13

4 ответа:

Попробуйте следующие правила:

# remove www from host
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]

# force HTTPS
RewriteCond %{HTTPS} =off
RewriteRule ^(login|foo|bar|…)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# force HTTP
RewriteCond %{HTTPS} =on
RewriteRule !^(login|foo|bar|…)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вы также можете добавить некоторые дополнительные условия, чтобы изменить протокол только для запросов GET и HEAD, но не для POST-запросов.

Этот код работает для меня:

<IfModule mod_rewrite.c>

   RewriteEngine on

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

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

</IfModule>

Удалить www (проверено):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC]
RewriteRule ^(.*)$ http://yoursite.com/$1 [L,R=301]

Перенаправление (не проверено):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} \/login/?.*\ HTTP [NC]
RewriteRule ^(.*)$ https://yoursite.com/login [L,R=301]

После прочтения этой строки времени всего поста у меня есть успех для следующей ошибки: мой сайт(c4dprime.com) был прикреплен https: в браузере mozilla firefox. Google и internet explore показывают адрес домена как http: (реальная проблема в firefox) я не хотел https: для моего домена в любом браузере, потому что один неизвестный редирект прикреплен с моим доменом по https: (причина этой ошибки)после установки следующих плагинов в wordpress, (Easy redirect for ssl).... Я сказал каждому не пользоваться любые низкоуровневые плагины для wordpress.

Так или иначе! После прочтения многих статей и учебных пособий по этой теме через поисковую систему google. Теперь я счастлив сказать, что я решил эту проблему из этого поста советов. Помните одну вещь обо мне, я новичок в этой форме и wordpress.

Этот совет-полная помощь для меня

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC]
RewriteRule ^(.*)$ http://yoursite.com/$1 [L,R=301]

После редактирования или некоторых изменений в моем .htaccess файл следующий код, который я использую сейчас с решил эту ошибку.

AddHandler c4d-prime .com

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteBase /
RewriteRule ^$ http://www.c4dprime.com/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress