保留SSL下的所有站点,除了两个子文件夹外,没有.htaccess

时间:2016-02-23 22:12:00

标签: php apache .htaccess ssl

我想知道是否可以将所有站点保留在ssl下,除了两个子文件夹作为外部调用apache的端点。

我的网站(www.example.com),用户只能看到https,我希望保持example.com/subfolder1example.com/subfolder2也可以通过正常http协议。有可能吗? 这是apache的.conf文件。

<VirtualHost 127.0.0.1:8080>
    ServerName example.com
    ServerAlias www.example.com
    Redirect / https://www.example.com/
</VirtualHost>

我试图避免使用.htaccess文件,是否有可能?谢谢大家!

1 个答案:

答案 0 :(得分:2)

您可以使用重写(而不是重定向),以便设置条件。也许是这样的:

<?php

$user="root"; $pass=""; $db="realesate";

$db = new mysqli('localhost', $user, $pass, $db);

//check connection
if ( $db->connect_error) {
die('Connect Error: ' . $db->connect_errno . ': ' .  $db->connect_error );
}

//insert data
$sql = "insert into agent (AgentFName , AgentMName , AgentLName , AgentContact , AgentEmail, AgentAddress , agentType) 
    values ( 
    '{$db->real_escape_string($_POST['fname'])}'    ,
    '{$db->real_escape_string($_POST['mname'])}'    ,
    '{$db->real_escape_string($_POST['lname'])}'    ,
    '{$db->real_escape_string($_POST['contact'])}'  ,   
    '{$db->real_escape_string($_POST['email'])}'    ,
    '{$db->real_escape_string($_POST['homeAdd'])}'  ,
    '{$db->real_escape_string($_POST['agentType'])}')";
$insert = $db->query($sql); 
    if ($insert) {
        echo"";


    }

//close connection
$db->close();
?>

您必须为此启用重写模块:

<VirtualHost 127.0.0.1:8080>
    ServerName example.com
    ServerAlias www.example.com
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/(subfolder1|subfolder2)/? [NC]
    RewriteRule ^(.*) https://www.example.com%{REQUEST_URI} [R,L]
</VirtualHost>