【问题标题】:How to fix htaccess RewriteRule back reference to RewriteCond? Fix for CPANEL AutoSSL Let’s Encrypt如何修复 htaccess RewriteRule 对 RewriteCond 的反向引用?修复 CPANEL AutoSSL Let's Encrypt
【发布时间】:2018-05-10 04:39:38
【问题描述】:

带有 AutoSSL (Let's Encrypt) 的 CPANEL 将自动 RewriteCond 添加到 htaccess,因为 .well-known 文件夹并每 X 分钟不断更新 htaccess 文件,因此您无法删除“众所周知”的行。但是通过这种方法,他们打破了 RewriteRule 对 RewriteCond 的反向引用。

# www to non-www generic
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

上面的这个例子并不像预期的那样工作,因为 %1 引用了最后一个 RewriteCond,而不是我们用 regexp 过滤主机的第一个。

【问题讨论】:

    标签: .htaccess mod-rewrite cpanel lets-encrypt


    【解决方案1】:

    使用变量对通用 www 到非 www 进行一些修复

    # www to non-www (fixed to work with CPANEL - AutoSSL)
    SetEnvIf Host "^www\.(.*)$" my_domain=$1
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
    RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteRule ^(.*)$ https://%{ENV:my_domain}/$1 [R=301,L]
    

    要绕过这个问题,请使用变量,它不漂亮但有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      相关资源
      最近更新 更多