Я просмотрел все перенаправления, опубликованные для покупки других, и не могу найти ответ на свою проблему.
У меня есть веб-сайт с более чем 3000 страниц, и у нас возникают проблемы с дублированием в Google.
Мы хотим, чтобы все в родительском каталоге было http, за исключением наших страниц contact.php и login.php.
Затем у нас есть 3 папки, которые необходимо защитить. админ, клиенты, заказчики
Я пробовал использовать следующий код в отдельных файлах .htaccess для каждой папки, но я продолжаю получать конфликт, когда пытаюсь, и все еще пытаюсь найти хорошее решение для домашнего каталога.
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} admin
RewriteRule ^(.*)$ https://www.website.com/$1 [R,L]
Любая помощь будет принята с благодарностью.
Не пытайтесь управлять протоколом для каждого файла отдельно. Вам нужны два разных дерева каталогов, одно для http, а другое для https, хотя последнее может быть подкаталогом первого. Когда у вас есть соответствующая структура, вы перенаправляете любой HTTP-вызов для защищенной страницы или каталога в соответствующее место в дереве https.
Я бы использовал идею черного / белого списка, разделенного на два отдельных блока директив.
Для всех запросов к HTTP-80 сопоставьте те каталоги или пути, которые ДОЛЖНЫ быть HTTPS, и перенаправьте их, все остальные будут проходить и обслуживаться правильно. Этот код предполагает, что это каталоги верхнего уровня.
Для запросов HTTPS-443 сделайте наоборот. Если запросы НЕ соответствуют разрешенным спискам, перенаправьте их обратно на HTTP.
RewriteEngine On
# redirect to https where appropriate
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/(admin|clients|customers) [OR]
RewriteCond %{SCRIPT_FILENAME} (contact.php|login.php)
RewriteRule ^(.*)$ https://test.dev/$1 [R=301,L]
# handle SSL requests, flick anything that doesn't match allowed back to non-SSL
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^/(admin|clients|customers)
RewriteCond %{SCRIPT_FILENAME} !(contact.php|login.php)
RewriteRule ^(.*)$ http://test.dev/$1 [R=301,L]