Я знаю, что этот вопрос задавали много, но я пробовал много ответов, но безуспешно. я пробую эти ответы: .htaccess ssl и перенаправления без SSL
Удалите интеграцию SSL из определенной папки с помощью htaccess
И несколько других, которые я нахожу в Google. У меня есть только ssl на 3 страницах сайта, и я хочу сделать общее правило, что другие страницы должны перенаправляться на http, когда они находятся на https. им нравится Джон Сноу, я ничего не знаю об apache и htaccess.
Итак, это то, что я пробую до сих пор:
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^\/(page1|page2|page3)+ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L]
И это:
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/page1/$
RewriteCond %{REQUEST_URI} !^/page2/$
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L]
Часть отправки на http работает, но исключение не выполняется, или они отправляют все на http или перенаправляют на индекс.
Чтобы уточнить, я не вводил оба кода одновременно.
Другие правила по:
RewriteCond %{HTTP_HOST} !^www\.example\.com\$
RewriteRule (.*) http://www.example.com.br/$1 [R=301,L]
RewriteRule !\.(js|txt|ico|gif|GIF|jpg|JPG|png|PNG|css|swf|pdf|xml|XML|eot|EOT|ttf|TTF|woff|WOFF)$ index.php
Полный URL по запросу: https://www.example.com.br/area-restrita/ в нем может быть больше информации после части 'area-restrita'
2 ответа
Попробуйте этот код:
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} !/(area-restrita|page2) [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=302]
RewriteCond %{HTTP_HOST} !^www\.example\.com\$
RewriteRule (.*) http://www.example.com.br/$1 [R=301,L,NE]
RewriteRule !\.(js|txt|ico|gif|GIF|jpg|JPG|png|PNG|css|swf|pdf|xml|XML|eot|EOT|ttf|TTF|woff|WOFF)$ index.php [L,NC]
https://www.example.com.br/area-restrita/
. Проверьте во вкладке Net, что вы получаете.
Если вы хотите перенаправить весь сайт на https , за исключением некоторых конкретных каталогов / URL-адресов, и в этих конкретных случаях вы по-прежнему хотите, чтобы они обслуживались через http , вы можете использовать этот метод в virtual.conf; в противном случае при совпадении RewriteCond определенные страницы всегда будут получать сообщение об ошибке «404 страница не найдена» .
<VirtualHost *:80>
ServerName www.example.com
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/app1/.*$ [NC]
RewriteCond %{REQUEST_URI} !^/app2/.*$ [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !=apps.example.com [NC]
RewriteCond %{REQUEST_URI} ^/app1/.*$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/app2/.*$ [NC]
RewriteRule ^.*$ http://apps.example.com%{REQUEST_URI} [R,L,P]
</VirtualHost>
<VirtualHost *:80>
ServerName apps.example.com
DocumentRoot /home/sites/example.com/public_html
</VirtualHost>
Похожие вопросы
Связанные вопросы
Новые вопросы
apache
Используйте этот тег (вместе с соответствующим тегом языка программирования) для вопросов программирования, касающихся HTTP-сервера Apache. Не используйте этот тег для вопросов о других продуктах Apache Foundation. Обратите внимание, что вопросы конфигурации сервера обычно лучше подходят на https://serverfault.com