htaccess перенаправить 4 конкретные страницы на https - PullRequest
7 голосов
/ 09 марта 2012

У меня проблема с тем, что мне нужно перенаправить 4 конкретные страницы моего сайта в их защищенные версии https.

В настоящее время у меня есть файл htaccess, который перенаправляет example.com и www.example.com на https://example.com

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://example.com/$1 [R] 

, что мне нужно, что-то вроде

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page1.php$ [NC]
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page2.php$ [NC]
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page3.php$ [NC]
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page4.php$ [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://example.com/page1.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page2.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page3.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page4.php$1 [R] 

Обратите внимание, что я удалил третью строку RewriteCond из приведенного выше кода, поскольку не хочу, чтобы на каждой странице моего веб-сайта отображались https только те страницы, которые я специально указал.

Как я могу решить эту проблему?

PS также, эта строка охватывает как www.example.com, так и example.com?

RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC]

Я предполагаю, что

^(.*\.)*

как-то связан сэто?

Ответы [ 2 ]

12 голосов
/ 09 марта 2012
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

#redirect www.mydomain.com to mydomain.com (or any other subdomain)
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [L,R=301]

#force https for certain pages    
RewriteCond %{HTTPS} !=on
RewriteRule ^(page1\.php|page2\.php|page3\.php|page4\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
4 голосов
/ 09 марта 2012

Я изменил и убрал твой код. Вы можете использовать этот код в своем файле .htaccess в $ DOCUMENT_ROOT:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# HTTPS is not already on
RewriteCond %{HTTPS} !=on
# Redirect to HTTPS is URI is page1.php OR page2.php OR page3.php OR page4.php
RewriteRule ^page[1234]\.php$ https://mydomain.com%{REQUEST_URI} [L,R]
...