Перенаправить определенные страницы WordPress на HTTPS - PullRequest
2 голосов
/ 17 июля 2011

У меня есть сайт WordPress и я хочу перенаправить определенные страницы в HTTPS.В частности, я хочу, чтобы http://www.mydomain.com/?page_id=4 был перенаправлен на https://www.mydomain.com/?page_id=4.Подход, который я выбрал, заключается в добавлении следующего к .htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^http://www.mydomain.com/?page_id=4 [NC]
RewriteRule ^(.*)$ https://www.mydomain.com/?page_id=4/$1 [R=301,L]

Но когда я перехожу на страницу, она не перенаправляет.Есть мысли?

Ответы [ 2 ]

2 голосов
/ 17 июля 2011

Ну ... %{HTTP_HOST} переменная будет преобразована только в доменное имя, и в вашем примере это будет просто www.mydomain.com. Вам нужно больше, чем это:

Options +FollowSymLinks -MultiViews
RewriteEngine on
# force secure version of this page
RewriteCond %{QUERY_STRING} ^page_id=(\d+) [NC]
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule ^(.*)$ https://www.mydomain.com/$1?page_id=%1 [R=301,L]
  1. Вы должны сравнить строку запроса, протокол и, необязательно, доменное имя отдельно с помощью 3 операторов RewriteCond.

  2. Я удалил /$1 из целевого URL - это не имеет смысла. Все, что должно сделать это правило, - это перенаправить на защищенную версию этого и только одного этого конкретного URL.

  3. Я не уверен, что эта строка действительно необходима: RewriteCond %{HTTP_HOST} =www.mydomain.com. Без него должно нормально работать.

  4. Убедитесь, что вы поместили это правило в соответствующее место - оно должно быть помещено ДО Правила переписывания WordPress.


UPDATE: Альтернатива:

Options +FollowSymLinks -MultiViews
RewriteEngine on
# force secure version of this page
RewriteCond %{QUERY_STRING} ^page_id=(\d+)(.*) [NC]
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule ^(.*)$ https://www.mydomain.com/$1 [QSA,R=301,L]
0 голосов
/ 17 июля 2011

Спасибо за помощь.Я нашел обходной путь.Я в основном жестко закодировал блок для каждой страницы #:

Options +FollowSymLinks -MultiViews
RewriteEngine on
#force secure version of page=4
RewriteCond %{QUERY_STRING} =page_id=4 [NC]
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule ^(.*)$ https://www.mydomain.com/?page_id=4 [R=301,L]

#force secure version of page=5
RewriteCond %{QUERY_STRING} =page_id=5 [NC]
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule ^(.*)$ https://www.mydomain.com/?page_id=5 [R=301,L]

#force secure version of page=6
...

Не элегантно, но это работает.

Последний выпуск.URL-адреса могут содержать символы после идентификатора страницы.Например: www.mydomain.com/?page_id=4&category=1.Кто-нибудь знает, как разместить подстановочный знак после page_id = 4?Спасибо!

...