仅通过HTTP访问网站,除了2页

时间:2012-02-11 18:07:54

标签: .htaccess seo

我需要帮助用户通过HTTPS访问我的网站。我只想通过HTTPS访问2个页面。所有其他页面应仅访问HTTP,如果用户尝试通过HTTPS访问该页面,则会将其重定向到该页面的HTTP版本。我已经尝试了几个.htaccess文件,但我似乎无法让它们中的任何一个工作。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

几种不同的方式:

  1. 您可以在2个页面(enroll.phpRegistered.php)中放置一些逻辑,以重定向到HTTPS。

    if ($_SERVER['HTTPS']!=”on”)
    {
        $redirect= “https://”.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        header(“Location:$redirect”);
    }
    
  2. 假设您正在使用Apache Web Server(其他Web服务器,包括IIS与重定向机制非常相似),您可以使用模式匹配,对于这两个URL,请指定重定向到HTTPS。

    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule (enroll.php) https://%{HTTP_HOST}%{REQUEST_URI}
    RewriteRule (Registration.php) https://%{HTTP_HOST}%{REQUEST_URI}
    

答案 1 :(得分:1)

将其添加到.htaccess个文件中,并将其放在目录的DocumentRoot中。

RewriteEngine on
RewriteBase /

Rewritecond %{REQUEST_URI} (?:(?:enroll|Registered)\.php)$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [L,R=301]


RewriteCond %{HTTPS} on
Rewritecond %{REQUEST_URI} !(?:(?:enroll|Registered)\.php)$ [NC]
RewriteRule ^(.*) http://%{HTTP_HOST}/$1 [L,R=301] 

启用重写记录:

RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9

将以上3行放在virtualhost中。重启httpd。

RewriteLogLevel 9对Level使用较高的值会大大减慢Apache服务器的速度!仅在大于2的级别使用重写日志文件进行调试! 9级将记录几乎所有重写细节。

执行find / -name httpd.conffind / -name apache.conffind / -name apache2.conf以查找conf文件的位置。通常在:/etc/httpd/conf

您在哪里添加SSL设置? SSLCertificateFile SSLCertificateKeyFile SSLCertificateChainFile