Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess:重定向到HTTPS主域_Php_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Php .htaccess:重定向到HTTPS主域

Php .htaccess:重定向到HTTPS主域,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我有一个非常奇怪的问题,我已经花了很多时间调查,但没有找到解决办法 基本上,我在服务器中有几个域,但为了简单起见,让我们假设只有两个域: example.co.nz main example.com 我想满足两个要求: a我希望所有流量从2重定向到1 b我希望所有HTTP通信都重定向到HTTPS 所以,基本上,在一句话中,我希望所有的流量,无论我在位置栏中键入什么样的URL模式,都能简单地进入 我在根目录中编写了一个.htaccess文件,如下所示: SetEnv TZ <IfModul

我有一个非常奇怪的问题,我已经花了很多时间调查,但没有找到解决办法

基本上,我在服务器中有几个域,但为了简单起见,让我们假设只有两个域:

example.co.nz main example.com 我想满足两个要求:

a我希望所有流量从2重定向到1 b我希望所有HTTP通信都重定向到HTTPS 所以,基本上,在一句话中,我希望所有的流量,无论我在位置栏中键入什么样的URL模式,都能简单地进入

我在根目录中编写了一个.htaccess文件,如下所示:

SetEnv TZ

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{HTTPS} !^on [OR]
    RewriteCond %{HTTP_HOST} !^www\.example\.co\.nz
    RewriteRule (.*) https://www.example.co.nz/$1 [R=301,L]

    RewriteCond %{REQUEST_URI} ^/(system|lib)(.*)$
    RewriteRule ^(.*)$ index.php?/$1 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
以下工作:

以下内容不会被重定向:

有没有人知道为什么会这样? 我想知道这是否与我的htaccess或服务器本身有关

任何帮助都将不胜感激。

发现问题

重定向实际上正在工作。当您尝试访问该网站时,将在收到有关证书的警告。接受警告后,您将被重定向到

这是因为SSL检查是在.htaccess重写之前应用的。由于没有为www.example.com安装证书,您将收到警告


唯一的解决方法是为www.example.com安装一个SSL证书。

这有点错误,检查适用,因为您试图在没有有效证书的域名上访问HTTPS,一旦用户接受,它就会尝试使用有效证书访问域。简单地说,在这个过程中,它们是两个不同的请求。我所提到的正是你所说的。所以它确实是正确的。您可以删除-1吗,因为这正是问题所在,而且它是正确的:SSL检查是在.htaccess重写之前应用的。