Удалить 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 ответа:
Попробуйте следующие правила:
# 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