Удалите 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 У меня неправильный порядок?

Ответ 1

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

# 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.

Ответ 2

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

<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>

Ответ 3

удалить 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]

Ответ 4

После прочтения этой строки всех сообщений я получаю успех за следующую ошибку: Мой сайт (c4dprime.com) был прикреплен https: в браузере Mozilla Firefox. Google и интернет-исследователи указывают адрес домена в виде http: (Настоящая проблема в firefox). Я не хотел, чтобы https: для моего домена в любом браузере, потому что одна неизвестная переадресация, прикрепленная к моему домену с помощью https: (Причина для этой ошибки) после установки следующих плагины в wordpress, (Легкое перенаправление для 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