私の仮想ホストの1つに次の設定があります。
...<VirtualHost *:80>
ServerName cloud.domain.de
ServerAdmin [email protected]
ServerSignature Off
Alias "/.well-known/acme-challenge" "/var/www/domain.de/vh-www/htdocs/public/.well-known/acme-challenge"
<Directory "/var/www/domain.de/vh-www/htdocs/public/.well-known/acme-challenge">
Require all granted
ForceType 'text/plain'
</Directory>
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %(REQUEST_URI) !/\.well\-known/acme\-challenge/?.*
RewriteCond %{HTTPS} off
# RewriteRule ^\.well-known/acme-challenge/([A-Za-z0-9-]+)/?$ - [L]
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
</ifmodule>...
私が達成したいのは、URL http://cloud.domain.de/.well-known/acme-challenge/
にアクセスします。
私はすでに別のアプローチを試しましたが、そのうちの1つは上記のコメント化されたRewriteRuleですが、何も機能しないようです。サーバーが毎回httpsに書き換えます。
テスト目的で書き換えを無効にすると、エイリアスURLに問題なくアクセスできます...
特定のURLが書き換えられないようにするにはどうすればよいですか?
そのように:
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
</ifmodule>
URIが一致する場合start with /.well-known/acme-challenge/
リクエストはリダイレクトされません
@mark「短くてより堅牢な」バリアントの正しいバージョン:
RewriteCond %{REQUEST_URI} ^/\.well\-known
RewriteRule . - [L]
IMHOはより短く、より堅牢です:
RewriteCond %{REQUEST_URI} ^\.well\-known
RewriteRule - [L]
最終的には/ acme-challenge /を追加したいかもしれませんが、./well-known/testのような任意のファイルでそれをデバッグしたい場合、このソリューションはよりうまく機能します
実際に何をするか:リクエストが.well-knownで始まるかどうかを調べます。その場合、何もしない(-の意味)。最後のルールにします[L]