.htaccess的letencrypt重写异常不起作用

时间:2019-07-24 13:58:44

标签: apache .htaccess url-rewriting lets-encrypt

我有一个自定义应用程序,该应用程序需要通过中央路由器重定向所有请求,并且需要为LetsEncrypt添加一个例外,以将请求发送到直接在文档根目录下创建的临时/.well-known目录中。

说我的原始.htaccess文件是:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^.*$ router.php

我将其修改为:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/.well-known.*$
RewriteRule ^.*$ router.php

但是我可以看到请求仍然被强制进入路由器。为什么这种重写条件不起作用?

1 个答案:

答案 0 :(得分:1)

您可以使用以下规则:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} !\s/\.well-known/?[?\s] [NC]
RewriteRule ^ router.php [L]

使用其他RewriteCond来跳过文件和目录,并使用THE_REQUEST代替REQUEST_URI