Я заставляю весь сайт работать через HTTPS
.Затем я продолжаю форсировать www
и обрабатывать страницы через index.php
со следующим в моем .htaccess
файле.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"https"' [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
</IfModule>
Тогда ниже этого пути ...
<IfModule mod_rewrite.c>
#Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ %{ENV:proto}://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Моя проблема в том, что мне нужно разрешить страницам, например с PRD
в URI
, проходить через HTTP
, а НЕ HTTPS
.
Итак http://www.localsite.com/index.php?PRD=123
Не будет переходить на https, в то время как любая другая ссылка будет.
* РЕДАКТИРОВАТЬ *
Я попытаюсь уточнить немного больше.Я пытался перехватить переадресацию / переписать раньше всех остальных, но он по-прежнему переходит между следующим: http://www.local.com/index.php?PRD=123
https://www.local.com/index.php?PRD=123
Это говорит мне, что это ловит его, но по какой-то причине второй набор правилперенаправляют еще тоже.
Я разместил следующее (я оставляю закомментированные другие попытки на случай, если они будут лучше?) Над первыми двумя, включил двигатель и переместил опции с этим.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{QUERY_STRING} ^PRD=([0-9]+) [NC]
#RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
#RewriteRule ^ http://%{HTTP_HOST}/$1 [R=301,L]
#RewriteRule ^(.*)$ http://%{HTTP_HOST}/index.php$1 [R=301,L]
RewriteRule ^ http://%{HTTP_HOST}/index.php$1 [R=301,L]
</IfModule>
Я также попытался поместить все в один блок, используя это:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
#Redirect non-www to www
RewriteCond %{HTTP_HOST} ^local.com [NC]
RewriteRule ^(.*)$ http://www.local.com/$1 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L]
#Redirect singular segments first
RewriteCond %{QUERY_STRING} ^PRD=([0-9]+) [NC]
RewriteRule ^(.*)$ http://www.local.com/$1 [L]
</IfModule>