Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
.htaccess 没有代理,无法正确加载https网站_.htaccess_Redirect_Https_Lets Encrypt_Xenforo - Fatal编程技术网

.htaccess 没有代理,无法正确加载https网站

.htaccess 没有代理,无法正确加载https网站,.htaccess,redirect,https,lets-encrypt,xenforo,.htaccess,Redirect,Https,Lets Encrypt,Xenforo,我有一个网站,在主页上有一个论坛(用Xenforo创建)。我最近把HTTPS和Let's encrypt放在一起(我用cPanel在服务器端启用了它)。该网站使用HTTP运行良好 现在我有了HTTPS,我遇到了一些问题,因为有些人可以像往常一样访问该网站,但其他人不能。那些无法打开我的网站的人必须使用代理,然后网站才会加载 在我编辑了.htaccess文件中的一行后,开始出现此错误: # Mod_security can interfere with uploading of content

我有一个网站,在主页上有一个论坛(用Xenforo创建)。我最近把HTTPS和Let's encrypt放在一起(我用cPanel在服务器端启用了它)。该网站使用HTTP运行良好

现在我有了HTTPS,我遇到了一些问题,因为有些人可以像往常一样访问该网站,但其他人不能。那些无法打开我的网站的人必须使用代理,然后网站才会加载

在我编辑了
.htaccess
文件中的一行后,开始出现此错误:

#   Mod_security can interfere with uploading of content such as attachments. If you
#   cannot attach files, remove the "#" from the lines below.
<IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
</IfModule>

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 503 default

<IfModule mod_rewrite.c>
    RewriteEngine On

    # I HAVE ADDED THESE 2 NEW LINES
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://forums.example.com/$1 [R,L]

    #   If you are having problems with the rewrite rules, remove the "#" from the
    #   line that begins "RewriteBase" below. You will also have to change the path
    #   of the rewrite to reflect the path to your XenForo installation.
    #RewriteBase /xenforo

    #   This line may be needed to enable WebDAV editing with PHP as a CGI.
    #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
    RewriteRule ^.*$ /index.php [NC,L]

</IfModule>
现在我有一个奇怪的问题:有些人可以访问我的网站,其他人不能,他们必须使用代理

我添加了这些规则,因为我需要将所有http重定向到https,所以
http://forums.example.com/
必须变成
https://forums.example.com/
。我以前从未遇到过这个问题。有什么想法吗?

首先 这些人收到的具体错误消息是什么

在构建时,我遇到了一个类似的问题,结果证明该证书没有正确加载,因此我假设这是来自浏览器的TLS“隐私错误”,而不是DNS或HTTP问题

下一个 我不熟悉cPanel,但我非常熟悉ACME标准和客户机

、certbot和许多其他Let's Encrypt客户端使用如下命名证书文件的约定:

  • privkey.pem
  • cert.pem
  • chain.pem
  • fullchain.pem
    cert.pem
    +
    chain.pem
一些也有
bundle.pem
fullchain.pem
+
privkey.pem

许多web服务器都需要CRT并输入文档。直觉上,您可能认为CRT应该是
cert.pem
,而KEY是
privkey.pem

这通常是不正确的

CRT是fullchain.pem 如果您的站点配置为使用
cert.pem
而不是
fullchain.pem
作为CRT,您将遇到您描述的问题

原因是,任何访问过正确使用与您预期相同中间权限的站点的人都会看到该页面-浏览器缓存中已经存在必要的
chain.pem

但是,任何浏览器的缓存中没有丢失的片段的人都会出现安全错误

为什么它会通过代理工作? 这取决于“代理”的类型——因为这对不同的人意味着不同的事情

我的猜测是,代理被用于比个人浏览器更多的站点(特别是许多使用同一链的小爱好者站点),可能代理实际上是下载站点,解密站点,然后转发站点,或者代理以某种方式用自己的缓存补充证书链

浏览器隐私错误的可能解决方案 你的问题可能和我的问题完全不同。这些症状听起来如此相似,这可能是巧合

我不想把你引向一个无法到达任何地方的兔子洞,但我认为检查你的设置以确保你使用的是
fullchain.pem
而不是
cert.pem
,这是重要的第一步

.htaccess重定向的可能解决方案 重定向的问题在我看来似乎是巧合。我怀疑这有什么关系

最有可能的是,一旦您的站点强制使用https,更多的浏览器在缓存中没有Let's Encrypt中间证书的访问者突然开始注意到这个问题,因为他们现在受到了影响

但是,如果您可以撤销这些更改并确认HTTPS(启用SSL)适用于这些用户,那么我建议您尝试添加具有相同功能的头,而不是执行重定向:

首先 这些人收到的具体错误消息是什么

在构建时,我遇到了一个类似的问题,结果证明该证书没有正确加载,因此我假设这是来自浏览器的TLS“隐私错误”,而不是DNS或HTTP问题

下一个 我不熟悉cPanel,但我非常熟悉ACME标准和客户机

、certbot和许多其他Let's Encrypt客户端使用如下命名证书文件的约定:

  • privkey.pem
  • cert.pem
  • chain.pem
  • fullchain.pem
    cert.pem
    +
    chain.pem
一些也有
bundle.pem
fullchain.pem
+
privkey.pem

许多web服务器都需要CRT并输入文档。直觉上,您可能认为CRT应该是
cert.pem
,而KEY是
privkey.pem

这通常是不正确的

CRT是fullchain.pem 如果您的站点配置为使用
cert.pem
而不是
fullchain.pem
作为CRT,您将遇到您描述的问题

原因是,任何访问过正确使用与您预期相同中间权限的站点的人都会看到该页面-浏览器缓存中已经存在必要的
chain.pem

但是,任何浏览器的缓存中没有丢失的片段的人都会出现安全错误

为什么它会通过代理工作? 这取决于“代理”的类型——因为这对不同的人意味着不同的事情

我的猜测是,代理被用于比个人浏览器更多的站点(特别是许多使用同一链的小爱好者站点),可能代理实际上是下载站点,解密站点,然后转发站点,或者代理以某种方式用自己的缓存补充证书链

可能的
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://forums.example.com/$1 [R,L]